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

+0

你得到的错误信息是什么? –

+0

错误:没有上下文类型信息的重载函数的地址 –

+0

为什么你需要在这里使用函数指针?为什么不重复调用'operator ++'? –