在不同类中使用和设置静态函数指针

Using & Setting Static Function Pointers in Different Classes

本文关键字:设置 静态函数 指针 同类      更新时间:2023-10-16

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

其中aA类的对象,或

(aptr->*fuu)();

其中aptr为类型为A*的指针。

如果没有A类的对象,就不能调用A类的非静态成员函数