如何在类中正确地编写枚举?我正在用C++编写康威生命游戏代码。因此,我有一个包含有关不同类型图案信息的模式类:
class Patterns
{
public:
Patterns();
~Patterns(void);
private:
enum class PatternType
{
bloat,
block,
blinker,
toad
};
PatternType pattern_;
};
我的目标不是在这里污染全球空间。因此,在考虑面向对象的概念时,在类内部编写枚举的写法是否正确。如果不是,请建议一些更好的替代方案以及它们相对于此方法的优势。欢迎任何关于在类内部编写枚举时需要注意的事项。
编辑:@Jay Miller 根据他的输入,我已经尝试了他的三种方法。
enum class PatternClassOut{ point, circle, triangle };
class Patterns
{
public:
enum PatternSimple{bloat, block, blinker, toad};
enum class PatternClassIn{cat, mouse, dog};
//get set functions for all the enum variables
private:
PatternClassOut out_;
PatternSimple simple_;
PatternClassIn in_;
};
我的发现(尝试代码和谷歌一下后):
- PatternSimple是我情况下编写枚举的最简单方法,放在类内部;但它会牺牲类型安全性,即我可以将枚举值与任何其他数据类型进行比较,而不会出现错误。
- PatternClassIn提供了类型安全性;但我必须在调用函数中编写更多代码才能访问枚举值。
- PatternClassOut提供了两全其美的最佳解决方案。它提供了类型安全性,而且从调用函数访问枚举值的代码与PatternSimple相同。