首页 > 解决方案 > 如何在另一个类的静态成员函数中传递非静态成员函数的函数指针

问题描述

class A{
static void callback(void(*fun)());

};


class B{
void f1();
}


int main{
B b;
A::callback(b.f1);
return 0'
}

如果 f1 是非静态成员函数,我将在编译时遇到以下错误

no known conversion for argument 1 from â <unresolved overloaded function type> â to â void (*)

如何在不将 f1 设为静态的情况下解决问题

请帮我

标签: c++static

解决方案


静态方法

一个类的所有非模板成员函数都有一个地址,不管它们是通过哪个类的实例来访问的。

静态类函数的特殊之处在于它们不传递this指针,因此可以在没有类实例的情况下调用它们,而是通过类名本身(即class::fn)调用它们。


推荐阅读