C ++ Funktionszeiger auf Klassenmethode setzen
Ich habe Probleme, einen Funktionszeiger auf eine Klassenmethode zu setzen. Ich habe einen Funktionszeiger auf eine Nicht-Klassen-Methode erstellt, und das funktioniert einwandfrei.
int foo(){
return 5;
}
int main()
{
int (*pointer)() = foo;
std::cout << pointer();
return 0;
}
Ich habe versucht, dies anzuwenden, damit eine Instanzvariable in einer Klasse ein Funktionszeiger ist.
Dies ist die Header-Datei. Es deklariert die private Methode Print, auf die die variable Methode zeigt.
class Game
{
public:
Game();
private:
void Print();
void (method)( void );
};
Der Game-Konstruktor versucht, die Zeigermethode der Adresse der Print-Methode zuzuweisen. Beim Kompilieren wird in dieser Zeile ein Fehler mit der Meldung "Fehler: Verweis auf nicht statische Elementfunktion muss aufgerufen werden" angezeigt. Ich weiß nicht was das bedeutet. Wie setzt man das richtig um?
Game::Game( void )
{
method = &Game::Print;
}
void Game::Print(){
std::cout << "PRINT";
}