我有以下功能:
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 ++中是否可行?
答案 0 :(得分:2)
普通函数指针和成员函数指针是不同的东西。
成员函数采用隐藏的this
参数,而普通函数则不行。要通过指针调用成员函数,需要一个对象来初始化this
参数。
因此,您无法将指向非静态成员函数的指针转换为普通函数指针,并在不传入对象的情况下通过它进行调用。