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

时间:2011-06-09 11:49:04

标签: c++ function-pointers

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

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

protected:
   bool (*ptf) (); 

public:
   MyClass();
};

MyClass::MyClass
{
    ptf = dofunction;   //// error 
}

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

bool function()
{
    return true; 
}

MyClass::MyClass()
{
    ptf = function;   //// OK
}

任何帮助?


AHA !! 谢谢

我使用了static个关键字。

3 个答案:

答案 0 :(得分:5)

对于班级成员函数,您需要使用pointer to member functions

bool (MyClass::*ptf) () ;

应该指定为,

ptf = &(MyClass::dofunction);

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

答案 1 :(得分:0)

第一个是bool (MyClass::*ptf) ()类型..你需要指定它所在的类。

答案 2 :(得分:0)

我认为应该是:

bool (MyClass::*ptf)();