如何将类成员函数传递给非类成员函数的参数?我收到以下编译错误:

error: argument of type ‘void (MyNamespace::MyClass::)(int*)’ does not match ‘void (*)(int*)’


图书馆

typedef void (*testCallback)(int* iParam);
void UsingTheFoo(testCallback Callback);


库.cpp

void UsingTheFoo(testCallback Callback)
{
  int *p_int = new int;
  *p_int = 5;
  Callback(p_int);
}


MyClass.cpp

namespace MyNamespace
{

    void MyClass::fooCB(int* a)
    {
        printf("hey! %d\n", *a);
    }


    void MyClass::testo()
    {
        UsingTheFoo(fooCB);
    }

} // MyNamespace


我无法在“库”中更改代码,我需要在MyClass成员函数中使用“ UsingTheFoo”。我知道自己的方式是错误的,我搜索并找到了类似的问题,但听不懂(在班次结束时不死:)),其中任何一个都完全适合我的问题。

我已经读过:http://www.parashift.com/c++-faq-lite/pointers-to-members.html:S

最佳答案

想要作为回调传递给静态的Make方法。因为所有方法都有隐式第一个参数-指向对象的指针,所以您会遇到此错误,因此它们的原型不对应于回调。

关于c++ - 在非类成员函数的参数中传递类成员函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10125922/

10-14 12:50