我有以下功能:
void PerformAction(void(*pf_action)());
和下面的类:
class A
{
public:
void DoSomething();
}
我希望能够做到这一点:
int main()
{
A a;
PerformAction(&(a.DoSomething);
return 0;
}
我看到很多答案都说函数签名应该是:
void PerformAction(void(A::*)());
这不是我想要的。
我希望能够将任何不接收参数并返回 void 的函数/方法传递给它。不只是 A 的成员方法或全局函数。
这在 C++ 中可能吗?
最佳答案
普通函数指针和成员函数指针是不同的东西。
成员函数有一个隐藏的this
参数,而普通函数则没有。要通过指针调用成员函数,需要一个对象来初始化该 this
参数。
因此,您不能将指向非静态成员函数的指针转换为普通函数指针并在不传入对象的情况下调用它。
关于c++ - 将指向成员函数的指针作为 void* 函数的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36549276/