考虑以下代码:
#include<iostream>
enum week
{
sun=1,
mon,
tue,
wed,
thr,
fri,
sat
};
week &operator++(week& day,int)
{
if(day==sat)
day=sun;
else
day++; // This expression
return day;
}
int main()
{
week day=sun;
for(int i=0;i<=10;i++,day++)
{
std::cout<<day;
}
}
Run Code Online (Sandbox Code Playgroud)
在表达式中day++它进入无限递归。
如果我像((int)day)++编译器一样投射它会出现以下错误:
error: lvalue required as increment operand
Run Code Online (Sandbox Code Playgroud)
如果我将线路更改为day=week(((int)day)+1)它的工作原理。但是如何修复上面的代码以便它与++操作员一起工作?