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
2011-08-19 all
你得到的错误信息是什么? –
错误:没有上下文类型信息的重载函数的地址 –
为什么你需要在这里使用函数指针?为什么不重复调用'operator ++'? –