【发布时间】:2016-05-01 17:12:28
【问题描述】:
我无法将函数指针指向类方法。我做了一个指向非类方法的函数指针,它工作正常。
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 );
};
Game 构造函数尝试将指针方法分配给 Print 方法的地址。编译时,该行出现错误,提示“错误:必须调用对非静态成员函数的引用;”。我不知道那是什么意思。实现这个的正确方法是什么?
Game::Game( void )
{
method = &Game::Print;
}
void Game::Print(){
std::cout << "PRINT";
}
【问题讨论】:
-
如果你想使用
Game类的成员函数,它什么都不返回也没有参数,你需要void (Game::*method)();。
标签: c++ pointers function-pointers