3

说我有

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
4

2 回答 2

2

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

于 2012-11-16T09:34:20.360 回答
0

您正在将指向成员函数的指针分配给函数指针。

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

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

于 2012-11-16T09:34:14.033 回答