我有两个班,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)();


其中aptrA*类型的指针。

没有类A的对象,您不能调用类A的非静态成员函数。

10-07 13:35