使用&在不同的类中设置静态功能指针

时间:2016-11-15 00:23:01

标签: c++ pointers function-pointers

我有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类中的静态函数

1 个答案:

答案 0 :(得分:3)

你需要

(a.*fuu)();

其中a是类A的对象,或

(aptr->*fuu)();

其中aptrA*类型的指针。

如果没有类A的对象,则无法调用类A的非静态成员函数来调用它。