如何为类级别的类型定义函数创建定义

How to create definition for class level typedef function

本文关键字:定义 类型 函数 创建      更新时间:2023-10-16

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

我有一个库中的类,它有一个函数的公共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:anoopeliaswspaceppc3experimentstesttypedefexample.cpp   24  1   TypeDefTest

正确的做法是什么?

简单地说,你的函数不尊重所提供的契约(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;
}