说我有
class B{ //base class
}
class A : public B{ //derived class
}
我还有一个返回指向B类指针的函数
B* returnB(){
B * object = new A; //pointer of base class allocate object of derived class
return object;
}
现在当我尝试制作指向函数B *的指针时,我收到错误
B* (*randomFunction)();
randomFunction = returnB;
Visual Studios不会编译。
1 IntelliSense: a value of type "B*(MediaFactory::*)()" cannot be assigned to an entity of type "B*(*)()" c:\Users\...\mediafactory.cpp 35
答案 0 :(得分:2)
您似乎正在尝试将指向类MediaFactory
的成员函数的指针分配到可以保存非成员函数的变量中。这些实体不兼容。使用boost bind
或将函数指针变量更改为B* (MediaFactory::*)()
类型。
答案 1 :(得分:0)
您正在为函数指针指定一个指向成员的函数。
除非是静态的,否则您的类的方法具有不同的签名和调用方法。简单函数声明不考虑类表示(例如隐式this
)。
见这里:http://www.parashift.com/c++-faq/fnptr-vs-memfnptr-types.html