C++ 使用&;在不同类中设置静态函数指针

C++ 使用&;在不同类中设置静态函数指针,c++,pointers,function-pointers,C++,Pointers,Function Pointers,我有两个班,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的实例调用非静态函数,

我有两个班,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
的非静态成员函数。

您需要

(a.*fuu)();
其中
a
a
类的对象,或

(aptr->*fuu)();
其中,
aptr
是类型为
a*
的指针


如果没有类
a
的对象来调用非静态成员函数,则不能调用类
a
的非静态成员函数。

是否有无法调用非静态成员函数的原因?我假设既然指针指向地址空间,那么我就可以在解引用后调用它。还有可能解决这个问题吗?可能将非静态函数作为回调传递到静态函数中?指向非静态成员函数的指针类似于指向将对象指针作为第一个参数传递的函数的指针(在函数中可作为“this”访问)。要像这样调用函数指针,您需要传递所有参数,包括第一个参数——答案中所示的方法基本上都是同步的,以填充第一个参数。有没有理由不能调用非静态成员函数?我假设既然指针指向地址空间,那么我就可以在解引用后调用它。还有可能解决这个问题吗?可能将非静态函数作为回调传递到静态函数中?指向非静态成员函数的指针类似于指向将对象指针作为第一个参数传递的函数的指针(在函数中可作为“this”访问)。要像这样调用函数指针,您需要传递所有参数,包括第一个参数——答案中所示的方法基本上是同步的,以填充第一个参数。