我有一个指向类中定义的成员函数的指针,例如:
class Example {
void (Example::*foo)();
void foo2();
};
在我的主代码中,然后将foo设置为:
Example *a;
a->foo = &Example::foo2;
但是,当我尝试调用foo时:
a->foo();
我收到以下编译时错误:“错误:明显调用括号前的表达式必须具有(指针指向)函数类型”。我以为我在某个地方弄错了语法,有人可以向我指出吗?
调用它,您将执行以下操作: (a->*(a->foo))()
(a->*X)(...)
-取消引用成员函数指针-括号a->*X
对于优先级很重要。
X = a->foo
-在您的示例中。
有关工作示例,请参见此处的ideone 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句