错误C2440:'=':无法转换

use*_*528 1 c++ function-pointers

这次我的问题是将函数分配给函数指针.我有一个这样的课:

class MyClass
{
 private:
   bool dofunction() {return true;}

protected:
   bool (*ptf) (); 

public:
   MyClass();
};

MyClass::MyClass
{
    ptf = dofunction;   //// error 
}
Run Code Online (Sandbox Code Playgroud)

但如果我在类之外使用一个函数,它会编译:

bool function()
{
    return true; 
}

MyClass::MyClass()
{
    ptf = function;   //// OK
}
Run Code Online (Sandbox Code Playgroud)

任何帮助?


啊哈!谢谢

我用了static关键字.

iam*_*ind 5

对于类成员函数,您需要使用指向成员函数的指针:

bool (MyClass::*ptf) () ;
Run Code Online (Sandbox Code Playgroud)

它应该被指定为,

ptf = &(MyClass::dofunction);
Run Code Online (Sandbox Code Playgroud)

另请注意,现在您无法分配ptf给非类功能.它完全是一种不同的类型(即使语法看起来相同).