枚举运算符重载,该怎么处理
枚举运算符重载C/C++ code#include iostreamusing namespace::stdenum Day {sun,mon,tue,wed,thu,fri,s
枚举运算符重载
C/C++ code#include <iostream>using namespace::std;enum Day {sun,mon,tue,wed,thu,fri,sat};Day& operator++(Day& d){ return d = (sat == d) ? sun : Day(d+1);}int main(){ Day day = tue; day++; cout<<day<<endl;}
xiaowen@hello-laptop:~/test/test-c/11$ g++ 237.cpp
237.cpp: 在函数‘int main()’中:
237.cpp:13:5: 错误: 没有为后缀‘++’声明‘operator++(int)’ [-fpermissive]
请问一下错误出在那里?
[解决办法]枚举里的值都是常量,必须初始值,如果用++改变他们的值显然是不行的
[解决办法] 这重载的哪里的Day类型的++运算符
作用域运算符在哪。如果加上了,声明又在哪。
后缀式的++运算符的重载形式也不是这样的。
应该是operator++(int)
枚举类型貌似不能重载运算符吧。知识有限。答不上来
[解决办法]仔细看了下是可以的,但是你的重载是++x,并没有重载x++,所以正确代码如下
C/C++ code#include <iostream>using namespace::std;enum Day {sun,mon,tue,wed,thu,fri,sat};Day& operator++(Day& d){ return d = (sat == d) ? sun : Day(d+1);}int main(){ Day day = tue; ++day; cout<<day<<endl;}