繁体   English   中英

C++:将 function 指针与成员函数一起使用

[英]C++: Using function pointers with member functions

我正在尝试将 function 作为参数传递给另一个 function,它们恰好是同一个 class 的成员函数。

我遇到了一个奇怪的错误,我无法弄清楚问题是什么。

这是我的功能:

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)'

那么给了什么? 我觉得我已经尝试了每一种变化来试图让它发挥作用。 您甚至可以为成员函数传递 function 指针吗? 我怎样才能让它工作?

注意:制作 functionToPass static 并不是一个真正有效的选项。

您可以将 function 指针传递给成员函数。 但这不是您的代码正在做的事情。 您对常规 function 指针( void (*passedFunction)()是常规 function 指针)和指向成员函数的指针( &myClass::functionToPass是指向成员函数的指针)感到困惑。 它们不是一回事,也不兼容。

你可以像这样重写你的代码

void myClass::function1(void (myClass::*passedFunction)())
{
   (this->*passedFunction)();
}

现在您的代码正在使用指向成员函数的指针,但这当然意味着您将无法传递常规的 function 指针。

正如其他人指出的那样,您的错误在于传递的 function 指针的类型。 它应该是void (myClass::*passedFunction)()

这是一个关于在 C++ 中使用指向成员函数的指针的好教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM