在这种情况下,如何传递成员函数而不是函数?

How can I pass a member function instead of a function in this situation?

本文关键字:函数 成员 这种情况下 何传递      更新时间:2023-10-16

我正在使用类中的对象来实现其功能。此对象的类定义的标头包含一个 typedef,然后是类声明:

typedef void (*Foo)(int arg);
class Bar
{private : double func(Foo f){};}

在我的类中,我想创建一个成员函数以将其传递给 func:

class myClass
{
private : 
Bar bar;
void my_func(int arg);
void my_caller();
};

在.cpp:

void myClass::my_caller()
{
bar.func(&myClass::my_func);
}

返回错误"调用 Bar::func..."没有匹配函数"。 我的理解是,typedef 中使用的类型不是"指向成员函数的指针",而是"指向函数的指针"。我想我必须更改此 typedef 才能更改此内容,但我不知道如何更改。

我是C++的绝对初学者,所以我可能在这里偏离了轨道。

编辑:

我理解我必须对 typedef 进行更改才能制作指向成员函数的指针。问题是这个 typedef 位于一个不同的头文件中,所以编译器返回"'myClass' 尚未声明"。

相反,我将研究函子和 std::function 库。

指向函数的指针和指向成员函数的指针是两个不同的东西。 因为有问题的函数是myClass的成员,所以正确的函数指针类型是:

typedef void (myClass::*Foo)(int arg);