我试图使用函数指针,我收到此错误:
无法转换void (__thiscall MyClass::*)(void)为void (__cdecl *)(void)
// Header file - MyClass.h
class MyClass
{
public:
MyClass();
void funcTest();
protected:
void (*x)();
};
// Source file
#include "stdafx.h"
#include "MyClass.h"
MyClass::MyClass()
{
x = funcTest;
}
void MyClass::funcTest()
{
}
Run Code Online (Sandbox Code Playgroud)
(使用:Visual Studio 6)
任何人都可以注意到我错过的任何东西吗?
的类型的非静态成员函数不是void (*)().它是void (MyClass::*)(),这意味着您需要声明x为:
void (MyClass::*x)();
x = &MyClass::funcTest; //use fully qualified name, must use & also
Run Code Online (Sandbox Code Playgroud)