gpt4 book ai didi

c++ - 枚举类型的运算符重载

转载 作者:行者123 更新时间:2023-12-01 07:23:15 25 4
gpt4 key购买 nike

考虑以下代码:

#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;
}
}

在表达式 day++ 中它进入无限递归。

如果我把它像 ((int)day)++编译器给出以下错误:
      error: lvalue required as increment operand

如果我将线路更改为 day=week(((int)day)+1)有用。但是如何修复上面的代码以使其适用于 ++运算符(operator)?

最佳答案

默认的增量运算符不适用于枚举。您必须重载增量运算符(使用 week(((int)day)+1) 逻辑)并在该重载函数中处理环绕。

关于c++ - 枚举类型的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59358549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com