Cas*_*ton 10 c++ member-function-pointers function-pointers
我试图将一个函数作为参数传递给另一个函数,它们都碰巧是同一个类的成员函数.
我得到一个奇怪的错误,我无法弄清楚问题是什么.
这是我的功能:
void myClass::functionToPass()
{
// does something
}
void myClass::function1(void (*passedFunction)())
{
(*passedFunction)();
}
void myClass::function2()
{
function1( &myClass::functionToPass );
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
cannot convert parameter 1 from 'void(__thiscall myClass::*) (void)'
to 'void(__cdecl*)(void)'
Run Code Online (Sandbox Code Playgroud)
什么给出了什么?我觉得我已尝试过各种变化,试图让它发挥作用.你甚至可以传递成员函数的函数指针吗?我怎样才能让它发挥作用?
注意:使functionToPass静态不是一个真正有效的选项.
joh*_*ohn 11
您可以将函数指针传递给成员函数.但这不是你的代码正在做的事情.常常的函数指针(void (*passedFunction)()
是常规函数指针)和指向成员函数&myClass::functionToPass
的指针(是指向成员函数的指针)之间的混淆.它们不是同一个东西,它们是不兼容的.
您可以像这样重写代码
void myClass::function1(void (myClass::*passedFunction)())
{
(this->*passedFunction)();
}
Run Code Online (Sandbox Code Playgroud)
现在你的代码使用指向成员函数的指针,但这当然意味着你将无法传递常规函数指针.