首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

静态函数指针数组的有关问题

2012-02-24 
静态函数指针数组的问题class ClassA{public:ClassA(HINSTANCE hInstance)~ClassA(void)private:typedef

静态函数指针数组的问题
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){};} 

热点排行