错误C2440:'type cast':无法从'overloaded-function'转换为'void(__ cdecl *)(void)'

时间:2010-12-09 22:46:26

标签: .net callback managed-c++

我有一个插件,它定义了一个像这样的回调设置器:

extern "C" __declspec(dllexport) void set_callback(void (*fn)(void));

和用托管C ++编写的插件调用者类,它引用了回调:

typedef void (CALLBACK* _set_callback)(void (*fnc)(void));

public ref class Caller {
    static void changeHandler(void);
}

void Caller::register() {
    _set_callback callback;
    callback((void (__cdecl *)(void))changeHandler);
}

在将changeHandler(void)定义为静态方法之前,一切正常。 如何将其更改为使用非静态方法?

1 个答案:

答案 0 :(得分:1)

编辑:看来我误解了这个问题。鉴于set_callback的当前声明,您无法删除static修饰符 - 这将使其成为成员函数(需要对象操作)并且您无法传递成员函数指向只接受普通函数指针的函数的指针。

相关问题