我试图将一个指向另一个类中定义的函数的指针传递给另一个类。经过大量研究,我相信我的语法是正确的,但我仍然遇到编译器错误。下面是一些代码,演示了我的问题:无法将指针传递到类之间的函数
class Base
{
public:
BaseClass();
virtual ~BaseClass();
};
class Derived : public Base
{
public:
// assign strFunction to the function pointer passed in
Derived(string (*funPtr)(int)) : strFunction(funPtr);
~Derived();
private:
// pointer to the function that is passed in
string (*strFunction)(int value);
};
class MainClass
{
public:
MainClass()
{
// allocate a new Derived class and pass it a pointer to myFunction
Base* myClass = new Derived(&MainClass::myFunction);
}
string myFunction(int value)
{
// return a string
}
};
当我尝试编译这段代码,我得到的错误是
error: no matching function for call to 'Derived::Derived(string (MainClass::*)(int))'
其次
note: candidates are: Derived::Derived(string (*)(int))
任何想法,我可能做错了吗?
以及如果这些类是分离的并且您不能指定'MainClass :: * funPtr'? – fduff 2012-08-13 11:57:32
然后我会推荐使用一个通用库,例如将参数设置为`boost :: function`并将函数传递给`boost :: bind` –
2012-08-13 12:46:15