【发布时间】:2011-10-27 18:16:20
【问题描述】:
我正在尝试将一个函数作为参数传递给另一个函数,而它们恰好是同一个类的成员函数。
我遇到了一个奇怪的错误,我不知道问题出在哪里。
这是我的功能:
void myClass::functionToPass()
{
// does something
}
void myClass::function1(void (*passedFunction)())
{
(*passedFunction)();
}
void myClass::function2()
{
function1( &myClass::functionToPass );
}
但是,我收到以下错误:
cannot convert parameter 1 from 'void(__thiscall myClass::*) (void)'
to 'void(__cdecl*)(void)'
那是什么?我觉得我已经尝试了每一种变化来试图让它发挥作用。你甚至可以为成员函数传递函数指针吗?我怎样才能让它工作?
注意:将 functionToPass 设为静态并不是真正有效的选项。
【问题讨论】:
-
错误消息为您提供了解决问题所需的所有信息。
-
使用
boost::function可能比使用函数指针更容易。你必须检查是否应该是boost::function<void(void)>(在这种情况下function2应该绑定this)或boost::function<void(MyClass&)>(在这种情况下function1应该通过*this)
标签: c++ function-pointers member-function-pointers