我有一个指向类内定义的成员函数的指针,例如:
class Example {
void (Example::*foo)();
void foo2();
};
在我的主要代码中,我将foo设置为:
Example *a;
a->foo = &Example::foo2;
然而,当我尝试调用foo时:
a->foo();
我遇到了以下编译时错误:“error: expression preceding parentheses of apparent call must have (pointer-to-) function type”。我猜想我在某个地方语法出错了,有人能指出来吗?
a->*(a->foo)
周围加上括号。 - Bob Fincheimerstd::function
的东西上,您就不必担心奇怪的语法,但做到这一点会稍微增加间接寻址开销。 - YoungJohn