使用下面的枚举来实现接下来的3个运算符
enum day {
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
};
day *operator++(day &d);
day &operator--(day &d);
day const &operator--(day &d);
这是我的代码:
day *operator++ (day &d)
{
d = (day)(d + 1);
return &d;
}
day &operator--(day &d)
{
d = (day)(d - 1);
return d;
}
day const &operator--(day &d)
{
d = (day)(d - 1);
return d;
}
但是我用第3个函数得到了一个重载函数。我该如何解决?
答案 0 :(得分:1)
正如@NathanOliver所说,C ++不允许程序员具有仅因返回类型而不同的重载。因此,您的第三次和最后一次重载不能与第二次重载共存。
无论如何,你也不应该写第一个重载。常见程序员使用++
运算符和语法糖x = x+1
(或多或少,因为前缀和后缀版本之间存在差异)。
但operator++
或加法返回指针真的很奇怪。它至少令人困惑,即使编译器在语法上可以接受。