我有一段这样的代码
class A {
public:
typedef int (A::*AFn)(int);
std::map<std::string, AFn> fm_;
A() {
fm_.insert("fn1", fn);
}
int fn(int a) {
return a;
}
};
我得到一个编译时错误说 error: reference to non-static member function must be called
fm_.insert("fn1", fn);
为什么会发生这种情况,我该如何纠正?
最佳答案
因为 fn
是一个非静态成员函数,一个单独的 fn
不是一个有效的表达式。在此上下文中,您可以对非限定 fn
做的唯一事情是调用它:fn(something)
。这就是编译器告诉您的内容。
如果你想获得一个指向成员函数A::fn
的指针,你必须明确地使用运算符&
并提供一个合格的成员名称:&A::fn
.
关于c++ - 错误 : Reference to non-static member function must be called (2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43153875/