让我们说清楚......
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)(...)'