静态函数指针数组的问题
class ClassA
{
public:
ClassA(HINSTANCE hInstance);
~ClassA(void);
private:
typedef int (ClassA::*Fun)(int);
HANDLE hRunThread;
static Fun funs[4];
int funtion(HINSTANCE hInstance);
static DWORD WINAPI ClassA::runThread (PVOID pArg);
static int fun1(int i){return i;};
static int fun2(int i){return i;};
static int fun3(int i){return i;};
static int fun4(int i){return i;};
};
ClassA::ClassA(HINSTANCE hInstance)
{
funs[0] = &ClassA::fun1;
funs[1] = &ClassA::fun2;
funs[2] = &ClassA::fun3;
funs[3] = &ClassA::fun4;
funtion(hInstance);
}
ClassA::~ClassA(void)
{
}
int ClassA::funtion(HINSTANCE hInstance)
{
hRunThread = CreateThread (NULL, 0, runThread, hInstance, 0, 0);
if (hRunThread)
CloseHandle (hRunThread);
return 1;
}
DWORD WINAPI ClassA::runThread (PVOID pArg)
{
while(1){};
}
error C2440: '=' : cannot convert from 'int (__cdecl *)(int)' to 'ClassA::Fun'
There is no context in which this conversion is possible
红色部分有错,如何解决???
[解决办法]
- C/C++ code
class ClassA{public: ClassA(HINSTANCE hInstance); ~ClassA(void);private:// typedef int (ClassA::*Fun)(int); typedef int (*Fun)(int); //here~~~~~~~~~ HANDLE hRunThread; static Fun funs[4]; int funtion(HINSTANCE hInstance); static DWORD WINAPI ClassA::runThread (PVOID pArg); static int fun1(int i){return i;}; static int fun2(int i){return i;}; static int fun3(int i){return i;}; static int fun4(int i){return i;};};ClassA::Fun ClassA::funs[4];//here~~~~~~~~~~ClassA::ClassA(HINSTANCE hInstance){funs[0] = &ClassA::fun1;funs[1] = &ClassA::fun2;funs[2] = &ClassA::fun3;funs[3] = &ClassA::fun4; funtion(hInstance);}ClassA::~ClassA(void){}int ClassA::funtion(HINSTANCE hInstance){ hRunThread = CreateThread (NULL, 0, runThread, hInstance, 0, 0); if (hRunThread) CloseHandle (hRunThread); return 1;}DWORD WINAPI ClassA::runThread (PVOID pArg){ while(1){};}