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)
请尝试转换为 int,加一 (+1),然后转换回 enum。
| 归档时间: |
|
| 查看次数: |
6118 次 |
| 最近记录: |