【发布时间】:2020-10-13 15:34:21
【问题描述】:
我有一个类,我希望在无参数构造时指向一个默认函数,但我希望在使用其中一个参数传入函数时更改该功能。
我收到错误“无法将“int (MyClass::*)(int myVar)”类型的值分配给“MyClass::funcptr”类型的实体” 但似乎 defaultFunction 应该将定义与函数指针相匹配。 我为此奋斗了一段时间,但我无法理解这里的问题所在。 任何帮助表示赞赏。
--MyClass.h--
class MyClass{
private:
typedef int (*funcptr)(const int myVar);
funcptr myfuncptr;
int defaultFunc(int myVar);
public:
MyClass(funcptr functionpointer);
MyClass();
void callFunction(int myVar);
};
--MyClass.cpp--
MyClass::MyClass(){
myfuncptr = defaultFunc; //a value of type "int (MyClass::*)(int myVar)" cannot be assigned to an entity of type "MyClass::funcptr"
};
MyClass::MyClass(funcptr functionpointer){
myfuncptr = functionpointer;
};
void MyClass::callFunction(int myVar){
int i = (*myfuncptr)(myVar);
};
int MyClass::defaultFunc(int myVar){
return myVar + 3;
};
【问题讨论】:
-
funcptr是一个指向函数的指针。&MyClass::defaultFunc(不是原始的defaultFunc,这是一个错误,除了 Microsoft 的不符合标准的编译器)是一个指向成员函数的指针。它们不一样。
标签: c++ function pointers constructor