指向函数的指针?

时间:2012-11-16 09:31:09

标签: c++ pointers

说我有

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

2 个答案:

答案 0 :(得分:2)

您似乎正在尝试将指向类MediaFactory的成员函数的指针分配到可以保存非成员函数的变量中。这些实体不兼容。使用boost bind或将函数指针变量更改为B* (MediaFactory::*)()类型。

答案 1 :(得分:0)

您正在为函数指针指定一个指向成员的函数。

除非是静态的,否则您的类的方法具有不同的签名和调用方法。简单函数声明不考虑类表示(例如隐式this)。

见这里:http://www.parashift.com/c++-faq/fnptr-vs-memfnptr-types.html