class que {
public:
que operator++(int) {} // 1
que &operator++() {}
que &operator+=(int n) {
que& (que::*go)();
go = 0; if(n > 0) go = &que::operator++ ; // 2
//go = (n > 0) ? (&que::operator++) : 0 ; // 3
}
};
int main() {
que iter;
iter += 3;
return 0;
}
我想通過3線,以取代2號線(「如果」語句「?」)。
如果我取消註釋3,編譯器會給我一個錯誤。
如果我刪除第1行,那麼第3行的作品。
問題是:編譯器想從我那裏得到什麼?
錯誤:錯誤:GCC-4.5.2
你得到的錯誤信息是什麼? –
錯誤:沒有上下文類型信息的重載函數的地址 – all
爲什麼你需要在這裏使用函數指針?爲什麼不重複調用'operator ++'? –