我有两个班,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的静态函数中调用非静态函数
最佳答案
你需要
(a.*fuu)();
其中
a
是类A
的对象,或者(aptr->*fuu)();
其中
aptr
是A*
类型的指针。没有类
A
的对象,您不能调用类A
的非静态成员函数。