寫了一段代碼是這樣的
enum day
{
Sunday, Monday, Tuesday,
Wednesday, Thursday, Friday,
Saturday, not_a_day
};
day* operator++(day *d)
{
//d = d + 1;
*d = (day)(*d + 1);
return d;
}
編譯出現了錯誤:error C2803: “operator ++”必須至少有一個類類型的形參
難道運算符的重載參數不能為指針,查閱了MSDN 得到如下結果
-----------------------------------------------------------------------------------------------------------------
錯誤消息
“operator operator”必須至少有一個類類型的形參
重載運算符缺少類類型的參數。
您需要通過引用(不是使用指針,而是使用引用)或值至少傳遞一個參數,從而能夠編寫“a < b”(a 和 b 均為類 A 類型)。
如果兩個參數都是指針,結果將是指針地址的純比較,并且將不使用用戶定義的轉換。
下面的示例生成 C2803:
// C2803.cpp
// compile with: /c
class A{};
bool operator< (const A *left, const A *right); // C2803
// try the following line instead
// bool operator< (const A& left, const A& right);