调用指向成员函数C ++

时间:2014-05-15 18:53:19

标签: c++ function-pointers

我有一个指向类中定义的成员函数的指针,例如:

class Example {
   void (Example::*foo)();

   void foo2();
};

在我的主代码中,我将foo设置为:

Example *a;
a->foo = &Example::foo2;

然而,当我试着打电话给foo:

a->foo();

我得到以下编译时错误:"错误:明显调用的括号前面的表达式必须具有(指针到)函数类型"。我假设我在某处弄错了语法,有人可以向我指出吗?

1 个答案:

答案 0 :(得分:13)

调用它你会做:(a->*(a->foo))()

(a->*X)(...) - 取消引用成员函数指针 - a->*X周围的parens对优先级很重要。

X = a->foo - 在您的示例中。

请参阅ideone here了解工作示例