为什么我不能访问指向数组中成员函数的指针?

Why can't I access the pointer to my member function in my array?

我有 class 和指向 class 方法的指针数组。但是,在 class 中,当我尝试调用数组中的函数之一时,出现错误。相关代码如下:

class MyClass
{
typedef void(MyClass::*FunctionPointer)(size_t *i);
void func1(size_t *i) { }
void func2(size_t *i) { }
void func3(size_t *i) { }
void func4(size_t *i) { }

FunctionPointer myFuncs[4] = { func1, func2, func3, func4 };
const std::string funcList[4] = { "FUNC1", "FUNC2", "FUNC3", "FUNC4" };

void doFunc(std::string in)
{
   size_t *j = 0;
   for (size_t i = 0; i < 4; ++i)
   {
      if (in == funcList[i]) { this->myFuncs[i](j); }           
   }
}
};

我试过省略 "this->" 和 "this->*" 但没有任何效果。我收到的错误是 "expression preceding parentheses of apparent call must have (pointer-to-) function type." 根据互联网,这意味着我正在尝试调用未定义为函数的内容。但我很确定我是? 谢谢

如果您遵循正确的语法,就可以;) 使用以下方法获取方法的地址:

&MyClass::func1

然后解析函数指针,执行:

(this->*myFuncs[i])

或完整...

class MyClass
{
typedef void(MyClass::*FunctionPointer)(size_t *i);
void func1(size_t *i) { }
void func2(size_t *i) { }
void func3(size_t *i) { }
void func4(size_t *i) { }

FunctionPointer myFuncs[4] = { &MyClass::func1, &MyClass::func2, &MyClass::func3, &MyClass::func4 };
const std::string funcList[4] = { "FUNC1", "FUNC2", "FUNC3", "FUNC4" };

void doFunc(std::string in)
{
   size_t *j = 0;
   for (size_t i = 0; i < 4; ++i)
   {
      if (in == funcList[i]) { (this->*myFuncs[i])(j); }           
   }
}
};