写了一段代码是这样的
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);