如何从包含来自另一个对象的函数指针的对象调用函数?

时间:2014-07-11 01:55:41

标签: c++ member-function-pointers

让我们说清楚......

enum toto {F1, F2, F3};

typedef void A::*func();
class A
{
  void f1();
  void f2();
  void f3();
};

class B
{
  func _f;
  int _x;
  int _y;
  B(func f, int x, int y) : _f(f), _x(x), _y(y)
};

class C
{
  A *a;
  std::map<toto, B *> _map;
  _map[F1] = new B(&A::f1, 42, 42);
  _map[F2] = new B(&A::f2, 12, 21);
  _map[F3] = new B(&A::f3, 0, 0);
  toto t;
  void app()
  {
    std::map<toto, B *>::iterator it = _map.find(t);
    B *tmp = it->second;
    /* HERE IS MY PROBLEM: HOW CAN I CALL THE FUNCTION F1, F2 OR F3 FROM 
       A VIA B in C ? */
    *(tmp->_f)(); // NOT WORKING 
  }
};

在编译时,我收到以下错误消息:

  

错误:必须使用'。'或' - &gt; '在'tmp-&gt; B :: _ f(...)'中调用指向成员的函数,例如'(... - &gt; * tmp-&gt; B :: _ f)(...)'

0 个答案:

没有答案