可能是一个天真的c++
问题,
我在一个库中有一个类,它有一个函数的公共typedef
,它也是它的构造函数的参数。我希望能够通过为此typedef创建一个定义来调用此构造函数。
为了简化理解,我在下面创建了示例代码,
namespace example {
class MyClass {
public:
typedef int(*MyFunc)(char c, int x);
MyClass(MyFunc myFunc) {
}
MyClass() {
}
};
}
static bool MyFuncDefinition(char c, int x) {
return 0;
}
int client() {
example::MyClass *myClassObject = new example::MyClass(MyFuncDefinition);
return 0;
}
会抛出编译错误,
Error 1 error C2664: 'example::MyClass::MyClass(const example::MyClass &)' : cannot convert argument 1 from 'bool (__cdecl *)(char,int)' to 'example::MyClass::MyFunc' d:\anoopelias\wspace\ppc3\experiments\test\typedefexample.cpp 24 1 TypeDefTest
这样做的正确方法是什么?
答案 0 :(得分:1)
简单地说,你的功能不尊重提供的合同(bool不是int)。
尝试如下:
namespace example {
class MyClass {
public:
typedef int(*MyFunc)(char c, int x);
MyClass(MyFunc myFunc) {
}
MyClass() {
}
};
}
static int MyFuncDefinition(char c, int x) {
return 0;
}
int main() {
example::MyClass *myClassObject = new example::MyClass(MyFuncDefinition);
return 0;
}