クラスメソッドへの関数ポインタの作成に問題があります。私は非クラスメソッドへの関数ポインタを作って、それは正常に動作します。C++クラスメソッドへの関数ポインタの作成方法
int foo(){
return 5;
}
int main()
{
int (*pointer)() = foo;
std::cout << pointer();
return 0;
}
これを適用して、クラス内のインスタンス変数を関数ポインタにすることを試みました。
これはヘッダーファイルです。変数メソッドが指すプライベートメソッドPrintを宣言します。
class Game
{
public:
Game();
private:
void Print();
void (method)(void);
};
ゲームコンストラクタは、ポインタメソッドをPrintメソッドのアドレスに割り当てようとします。コンパイル時に、その行に "error:非静的メンバー関数への参照を呼び出さなければならない;"というエラーが表示されます。私はそれが何を意味するのか分かりません。これを実装する正しい方法は何ですか?
Game::Game(void)
{
method = &Game::Print;
}
void Game::Print(){
std::cout << "PRINT";
}
一種の厄介だ;'あなたがのメンバ関数を使用したい場合何も返さずパラメータを持たない 'Game'クラスです。 –