我想要做的是使用枚举轻松指定不同的绘制模式。到目前为止,这就是我所拥有的:
class Grid {
enum drawMode { GRID, EROSION, RIVERS, HUMIDITY, ATMOSPHERE }
drawMode activeDraw;
void draw() {
switch(activeDraw) {
case GRID:
drawGrid();
break;
case EROSION:
drawErosion();
break;
// etc..
}
void keyPressed(int key) {
switch(key) {
case ' ':
// Cycle activeDraw to next drawMode
}
}
因此,如果用户按空格键,则 activeDraw 将从枚举更改为下一个值。因此,如果当前的 activeDraw 在击中空间后是 GRID,它将更改为 EROSION,如果 activeDraw 是 ATMOSPHERE,它将更改为 GRID。
有一个简单的解决方案吗?谢谢。
原文由 Maroš Beťko 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如 Maroš Beťko 所指出的,要将 1 添加到变量中,您必须将值转换为
int
并返回:如果枚举是在没有 C++11
enum class
语法的情况下定义的(如问题文本中),则不需要强制转换为int
:要使其循环回零,请使用整数算术,模运算符:
要消除一个丑陋的
+1
,请在枚举中添加另一个元素:如果您经常使用它,您也可以将此代码填充到
operator++
中:enum
s 的重载运算符很少使用,有些人认为它矫枉过正(不好),但它会使您的代码更短(并且可以说更简洁)。