C++ 如何使用指向方法的指针作为参数(当需要指向函数的指针时)?

C++ 如何使用指向方法的指针作为参数(当需要指向函数的指针时)?,c++,function,pointers,methods,function-pointers,C++,Function,Pointers,Methods,Function Pointers,我有一些第三部分代码: class A(){ public: void assingOnClickFunction(void (*function)(); }; 我无法更改该代码中的任何内容。 我想传递给A::assinginclickfunction()我的类B方法,void B::someFunction()。我已经试过了(所有的都是B班的): 但我得到了一个错误: 函数调用缺少参数列表;使用“&B::someFunction”创建 指向成员的指针 所以我把它改成

我有一些第三部分代码:

class A(){
    public:
        void assingOnClickFunction(void (*function)(); 
};
我无法更改该代码中的任何内容。 我想传递给
A::assinginclickfunction()
我的类B方法,
void B::someFunction()
。我已经试过了(所有的都是B班的):

但我得到了一个错误:

函数调用缺少参数列表;使用“&B::someFunction”创建 指向成员的指针

所以我把它改成:

a->assingOnClickFunction(&B::someFunction);
但是现在有关于不同类型的错误:
(void(*)(
)和
(&B::*)()

我不能使
B::someFunction()
静态(它使用了大量非静态
B
的成员和方法)


因此,是否有一个选项可以将my
B::someFunction()
传递给
A::assingOnClickFunction()
,不将其更改为静态,也不更改
A
类中的任何内容(
A
不知道
B
B
包括
A

如果要传递的成员函数不是
静态的
,则不能这样做。
A
中的方法接受指向没有参数的函数的函数指针,而非静态成员函数有一个隐式的
指针参数。

指向成员函数的指针是而不是A p指向函数的指针。如果函数的参数类型为指向函数的指针,则不能使用指向成员函数的指针调用该函数。

要调用对象的(非静态)方法,需要知道对象和要调用的方法

assingOnClickFunction()函数只接受指向函数的指针,因此无法向其传递所需的信息


除了一些可怕的攻击,比如实现一个可以访问对象的全局实例的函数,并通过该函数调用方法,这是无法完成的。

是您要传递的成员函数
static
?正如我所写的,它不是静态的,我无法将其更改为静态。尝试它会出现错误:“type cast”:无法c从“void(uu thiscall B::*)(void)”转换为“void*”,请在询问之前先用谷歌搜索——事实上,我一直在考虑类似于“hacks”的东西。但我想我应该重建我的代码,并用其他方式来实现它(如果有全局实例和函数可以访问它,这看起来会非常可怕)。
a->assingOnClickFunction(&B::someFunction);