0
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);
爲什麼會出現這種情況,一段代碼我該如何改正它?
那麼,我將如何聲明一個允許值爲非靜態成員函數指針的地圖,以及如何使用它? – ace007
@ ace007:地圖被正式聲明。當你*插入元素到你的地圖中時,你必須使用'&A :: fn'語法而不是普通的'fn'。只要做'fm_.insert(「fn1」,&A :: fn);'。就這樣。 – AnT
我試過了,它說錯誤:沒有匹配的成員函數調用'insert'fm_.insert(「fn1」,&A :: fn);' – ace007