我想在C++中做C包裝。C++類成員函數C結構函數指針
但我不能將類內的函數轉換爲結構函數指針。
不應將myCallback函數用作靜態函數,因爲它必須被覆蓋。
下面是示例代碼:
#include <iostream>
extern "C" {
typedef struct _client_config
{
void (*on_connect)(void *client, int result);
} client_config;
}
class Parent
{
public:
Parent() {};
~Parent() {};
virtual void myCallback(void* hello, int world) = 0;
};
class Child : public Parent
{
public:
Child() {};
~Child() {};
void myCallback(void* hello, int world)
{
printf("Hello World! \n");
}
};
int main(void)
{
Parent* myClass = new Child();
client_config* myClientConfig = (client_config *)malloc(sizeof(client_config));
myClientConfig->on_connect = myClass->myCallback;
return 0;
}
這是在編譯過程中,編譯器說的話:
Error 1 error C3867: 'Parent::myCallback': function call missing argument list; use '&Parent::myCallback' to create a pointer to member
Error 2 error C2440: '=' : cannot convert from 'void (__thiscall Parent::*)(void *,int)' to 'void (__cdecl *)(void *,int)'
任何人都可以指出綁定一個類的成員函數的結構函數指針的方式或我在這裏做錯了什麼?