我有2个班,A和B
A有一个名为foo();
的函数B有一个静态函数指针,旨在指向foo,让我们称之为fuu。
B类中fuu的定义如下所示
static void (A::*fuu)();
在运行时类A的某个地方设置fuu。 我写的代码类似于
B::fuu = &A:foo;
这正确设置了函数指针,但我无法使用它(我在B类中调用它)
我试过
*fuu();
B::fuu();
B::*fuu();
是否存在阻止我解除引用的语法错误?
TLDR:尝试从A类实例中调用非静态函数,来自B类中的静态函数
答案 0 :(得分:3)
你需要
(a.*fuu)();
其中a
是类A
的对象,或
(aptr->*fuu)();
其中aptr
是A*
类型的指针。
如果没有类A
的对象,则无法调用类A
的非静态成员函数来调用它。