为啥我不能访问指向数组中成员函数的指针?
Posted
技术标签:
【中文标题】为啥我不能访问指向数组中成员函数的指针?【英文标题】:Why can't I access the pointer to my member function in my array?为什么我不能访问指向数组中成员函数的指针? 【发布时间】:2020-01-30 03:14:45 【问题描述】:我有一个带有指向类方法的指针数组的类。但是,在课堂上,当我尝试调用数组中的某个函数时,出现错误。以下是相关代码:
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->*”,但没有任何效果。我得到的错误是“明显调用括号前的表达式必须具有(指向)函数类型。”根据互联网,这意味着我正在尝试调用未定义为函数的东西。但我很确定我是? 谢谢
【问题讨论】:
【参考方案1】:如果你遵循正确的语法,你可以;) 获取方法的地址使用:
&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);
;
【讨论】:
谢谢!我曾尝试使用 '*' 取消引用该函数,但我没有括号。以上是关于为啥我不能访问指向数组中成员函数的指针?的主要内容,如果未能解决你的问题,请参考以下文章