c ++中的函数指针

use*_*929 3 c++

我试图使用函数指针,我收到此错误:

无法转换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)

任何人都可以注意到我错过的任何东西吗?

Naw*_*waz 5

的类型的非静态成员函数不是void (*)().它是void (MyClass::*)(),这意味着您需要声明x为:

void (MyClass::*x)();

x = &MyClass::funcTest; //use fully qualified name, must use & also
Run Code Online (Sandbox Code Playgroud)