为什么这段代码运行报错啊?
- C/C++ code
//Listing 10.10//operator++ returns a nameless temporary object#include <iostream>using namespace std;class Counter{public: Counter(); Counter(int val); ~Counter(){} int GetItsVal() const {return itsVal;} void SetItsVal(int x) {itsVal = x;} void Increment() {++itsVal;} Counter operator ++() {}private: int itsVal;};Counter::Counter():itsVal(0){}Counter::Counter(int val):itsVal(val){}Counter Counter::operator ++(){ ++itsVal; return Counter(itsVal);}int main(){ Counter i; cout<<"The value of i is "<<i.GetItsVal()<<endl; i.Increment(); cout<<"The value of i is "<<i.GetItsVal()<<endl; ++i; cout<<"The value of i is "<<i.GetItsVal()<<endl; Counter a = ++i; cout<<"The value of a: "<<a.GetItsVal(); cout<<" and i: "<<i.GetItsVal()<<endl; return 0;}[解决办法]
Counter operator ++() {} //已经定义了函数,不过是空的。。
=》Counter operator ++();
[解决办法]
楼上说得对,Counter operator ++() {} 是一个inline成员函数了,再次定义会冲突