【发布时间】:2018-10-04 16:56:18
【问题描述】:
我在一个类中使用一个对象来实现它的功能。这个对象的类定义的头部包含一个 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 库。
【问题讨论】:
-
我不确定你的问题到底是什么。
-
typedef 是指向函数的指针,而不是指向成员函数的指针,除此之外我不明白为什么要传递指向成员函数的指针,为什么不传递类的实例?
-
我已经编辑了标题以提及我正在尝试做的事情。
-
你标题的答案是:你不能。
-
但是typedef在Bar类头文件中,不知道怎么写才能考虑到成员函数的类。
标签: c++ oop typedef member-function-pointers