如何在VS C++ 6.0中增加枚举?

T.T*_*.T. 5 c c++ compiler-construction enums visual-studio

我复制并粘贴了一些增加枚举的代码:

myenum++;  
Run Code Online (Sandbox Code Playgroud)

这段代码在VS.NET C++ 2003中编译时效果很好

我现在正在VS 6.0中开发并得到错误:

错误C2676:二进制'++':'枚举ID'未定义此运算符或转换为预定义运算符可接受的类型

我怎样才能让它在6.0中表现相同?

fra*_*ji1 13

我认为在一个易于理解的枚举上定义operator ++没有错.这不是运算符重载的目的吗?如果上下文没有意义(例如,带有洞的枚举),那么当然它没有意义.为实现复数的复杂类定义operator*不仅有效,而且是C++中数学运算符重载的一个很好的应用!

如果开发人员定义了一个枚举,其中operator ++对该枚举的客户端有明显的直观意义,那么这就是该运算符重载的一个很好的应用.

enum DayOfWeek {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
inline DayOfWeek operator++(DayOfWeek &eDOW, int)
{
   const DayOfWeek ePrev = eDOW;
   const int i = static_cast<int>(eDOW);
   eDOW = static_cast<DayOfWeek>((i + 1) % 7);
   return ePrev;
}
Run Code Online (Sandbox Code Playgroud)


Pav*_*sky 3

请尝试转换为 int,加一 (+1),然后转换回 enum。

  • 将 1 添加到表示为 int 的枚举并不能保证您将拥有另一个有效的枚举值。 (4认同)
  • @Greg:有效的枚举值,即 可以“强制”到枚举对象中的值包括四舍五入到最接近的 2 的较大幂的枚举范围内的所有整数值。换句话说,仅仅因为您获得的值在枚举定义中没有名称,那么并不一定意味着该值无效。只要保持在该范围内,所有值都有效。 (2认同)