我在调用结构体内部的函数指针时遇到问题。我之前在类之外使用过这种方法,但现在我正在使用指向其他类方法的函数指针在类方法中尝试它......我收到编译器错误。这是我的课程:
class Myclass
{
int i;
void cmd1(int)
{}
void cmd2(int)
{}
void trans()
{
const struct
{
std::string cmd;
void (Myclass::*func)(int)
}
CmdTable[] =
{
{ "command1", &Myclass::cmd1 },
{ "command2", &Myclass::cmd2 }
};
CmdTable[0].func(i);
CmdTable[1].func(i);
}
};
线条CmdTable[0].func(i);
and CmdTable[1].func(i);
两者都提供以下内容
错误:
错误:表达式必须具有(指向)函数类型。
我意识到可能有更好的方法来做到这一点,但我很好奇为什么我写的内容不起作用。任何解释将不胜感激。
指向成员函数的指针是一个纯粹的class财产。您需要将其与类实例结合起来才能进行有意义的函数调用。例如,要使用实例*this
,您可以使用运算符->*
并说:
(this->*CmdTable[0])(i);
或者您可以使用运算符.*
在对象值上:
(*this.*CmdTable[0])(i);
后一种形式总是正确的。对于前者,请注意operator->*
可能会超载并做一些不相关的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)