gpt4 book ai didi

c++ - 如何为类级 typedef 函数创建定义

转载 作者:行者123 更新时间:2023-11-28 06:10:48 25 4
gpt4 key购买 nike

可能是一个幼稚的c++问题,

我在库中有一个类,它有一个函数的公共(public) 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

执行此操作的正确方法是什么?

最佳答案

简单地说,您的函数不遵守提供的契约(Contract)(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;
}

关于c++ - 如何为类级 typedef 函数创建定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31309430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com