【发布时间】:2014-03-05 05:16:42
【问题描述】:
我有下面的函数有枚举。如果按下按钮,我想增加值。
typedef enum {
DATE_TIME,
COORDINATE,
WINDSPEED,
POSITIONTRACK,
DISPAY_PARAMETER,
SET_PARAMETER,
DISPLAY_TYPE_MAX
}DISPLAY_SCREEN_TYPE;
DISPLAY_SCREEN_TYPE display_screen_type=DATE_TIME;
button=check_key();
if(button==RIGHT)
display_screen_type++;
编译时收到的错误消息。
error: no 'operator++(int)' declared for postfix '++', trying prefix operator instead
error: no match for 'operator++' in '++display_screen_type'
这是我的实际代码语法 CODE discription
【问题讨论】:
-
当然。枚举不是定义了算术运算的类型。您可以从 int 显式转换为 int,但这很丑。
-
如何将枚举声明为具有上述值的 int
-
也许您需要构建一个有限状态机 (FSM) 来正确处理程序的状态和状态之间的转换。正如@millinon 建议的那样,如果您的程序足够简单,您可以使用简单的
switch,或者查看现有的 C++ FSM 库之一,例如 boost-extension.redshoelace.com/docs/boost/fsm/doc/… -
这适用于 C,但不适用于 C++。
-
我正在使用它来实现 Switch 语句。假设如果 button== 右按两次,则它应该将枚举值更新更改为下一个。如果再次按下将其更改为下一个枚举值。