我定义了一个枚举:
enum class KeyPressSurfaces {
KEY_PRESS_SURFACE_DEFAULT,
KEY_PRESS_SURFACE_UP,
KEY_PRESS_SURFACE_DOWN,
KEY_PRESS_SURFACE_LEFT,
KEY_PRESS_SURFACE_RIGHT,
KEY_PRESS_SURFACE_TOTAL
};
后来我尝试按照下面的方式定义一个数组,但是我收到了这个错误:size of array 'KEY_PRESS_SURFACES' has non-integral type 'KeyPressSurfaces'
SDL_Surface*KEY_PRESS_SURFACES[KeyPressSurfaces::KEY_PRESS_SURFACE_TOTAL];
我明白错误是什么,但我不知道该把 KeyPressSurfaces
移动到哪里才能使枚举中的常量符合条件。
我也意识到我可以只使用一个 enum
而不是 enum class
,但我觉得这应该能够工作,并且我想学习如何做到这一点。
有什么回复或建议吗?
KEY_PRESS_SURFACE_TOTAL
会自动调整。实际上,使用枚举来确定数组大小是一种很好的技巧。当它是一个常数时,您必须编辑与该数组大小相关的所有代码部分,特别是在某些涉及数组大小的计算中。 - acegsKeyPressSurfaces::KEY_PRESS_SURFACE_DEFAULT
太糟糕了!只需放弃前缀,也放弃大写字母,因为这里没有宏,放弃名词复数,因为我认为它是不必要的,最好为集合实例保留,然后写成KeyPressSurface::default
。好多了。 - underscore_dKeyPressSurface::default
之外的所有内容都加1,但是它将无法编译。根据 Google 的指南,您应该编写类似于KeyPressSurface::kDefault
的内容(https://google.github.io/styleguide/cppguide.html#Enumerator_Names)。 - Andreas Magnusson