在这种情况下,如何传递成员函数而不是函数?
How can I pass a member function instead of a function in this situation?
我正在使用类中的对象来实现其功能。此对象的类定义的标头包含一个 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);
相关文章:
- 如何使用指针传递给函数的数组中对象的函数成员
- c++构造函数成员初始化:传递参数
- 创建 std::函数,它返回具有函数成员值的变量.分段错误
- 如何在C++通过公共函数访问私有函数成员?
- 解释了构造函数成员初始化列表
- 调用std::函数成员时内存损坏
- 是否可以为模板类的模板函数成员设置别名?
- 捕获 lambda 函数C++成员变量
- 构造函数成员初始值设定项跨成员列出,安全吗?
- 获取与在模板参数中传递的函数成员类型相同的类
- 如何从公共函数成员访问地图私有成员
- C 构造函数成员分配优化
- 使用命名空间进行函数成员定义
- 函数成员作为 CUDA 内核的参数
- 模板基类函数成员的别名
- 函数成员中用于void和继承的enable_if
- 头文件中是否定义了一个很长的Class函数成员
- 类内/构造函数成员初始化
- 使用指向部分专用函数成员的指针自动填充向量
- 指向函数成员的指针