【发布时间】:2013-04-11 13:29:39
【问题描述】:
我正在尝试构建基于常量的结构。我有ObjectTypes (KEYBOARD, MOUSE, HAPTIC...),它可以有InputTypes(鼠标可以是默认值和反转,而键盘可以是默认值和数字,而触觉只能是默认值)。
为了使这项工作正常工作,我尝试在 C++ 中名为 Constants 的类中使用枚举内的枚举。将ObjectTypes 参数和InputTypes 参数传递给函数可能会起作用,所以我在原型中需要这样的东西:
changeInputSystem(SimulatorConstants::InputObject input, SimulatorConstants::InputTypes type)
但是在 C++ 中,当我声明一个枚举时(内部)从中取出的每个值,其中一些替换其他的。
我现在的代码(不工作)是:
enum InputObject {
KEYBOARD,
MOUSE,
HAPTIC
};
enum InputTypes {
enum KeyboardTypes {
DEFAULT
};
enum MouseTypes {
DEFAULT,
INVERSE
};
enum HapticTypes {
DEFAULT
};
};
注意:我知道枚举之间没有继承,所以我需要任何可以以类似方式工作的解决方案。 谢谢。
【问题讨论】:
-
你不能有嵌套的枚举。枚举是命名常量,而不是用户定义的数据类型,如结构或类。
-
如我所说,我知道这一点,但不知道如何用另一种结构解决它
-
为什么不用 struct InputTypes { enum { ... } enum {..} } 代替?
-
也许您想使用
union? -
如果你可以使用
enum class,那将解决你几个DEFAULTs的冲突。您仍然需要将类型枚举类放在结构或命名空间中以捆绑它们。