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

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

本文关键字:成员 函数 指针 数组 访问 为什么      更新时间:2023-10-16

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

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->*",但没有任何效果。我得到的错误是"明显调用括号前面的表达式必须具有(指针指向(函数类型。根据互联网,这意味着我正在尝试调用未定义为函数的东西。但我很确定我是? 谢谢

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

&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); }           
}
}
};