继承类之间的枚举的最佳实践是什么?
What is the best practice for enums between inherited classes?
我已经阅读了许多帖子(即基本枚举类继承),这些帖子显示了诱骗编译器扩展派生类以使枚举继续的方法。
我看到这种方法的问题是,如果你需要在基类中有一个新的枚举,这会抛弃派生类的编号系统。 只要您不需要读取保存的文件,这可能就可以了。
但是,如果类结构用于序列化文件怎么办? 对我来说,这似乎是一个问题。 处理这种情况的建议最佳做法是什么?
只需给你的值两个部分:它们属于哪个类,以及枚举的值。 喜欢这个:
struct B
{
enum X { b0, b1, b2, b3 };
};
struct C : B
{
enum Y { c0, c1 };
};
enum WhichClass { b, c };
现在你可以存储一对:第一个元素是 WhichClass,第二个元素是 X 或 Y。
另一个想法是简单地要求每个类都有一个值范围,例如,第一个类得到 0 到 999,第二个类得到 1000 到 1999,等等。 您可以像链接的帖子一样实现这一点,但对基类Last
值使用显式的、更高的值。
相关文章:
- 隐式不是带有枚举解释的运算符 (!)?
- 表达式必须是带有枚举的可修改左值
- 将枚举与 CMake 链接的正确方法是什么?
- 调用模板化类内的枚举类枚举器的正确语法是什么
- 在C++中向枚举添加"all"选项的好设计是什么?
- 我应该使用什么而不是模板的枚举
- 在Visual Studio中定义与Typedef枚举发生冲突的原因是什么?
- 在 .NET 中调用 COM 枚举器的正确方法是什么?
- 在枚举上使用的正确铸件是什么
- 无法理解C++中的枚举,它们实际上是什么?
- Qt:Q_OBJECT中枚举的meta.enumeratorCount()没有元数据,原因是什么
- 传递枚举数组是什么意思
- 继承类之间的枚举的最佳实践是什么?
- "<<"(双尖括号)在 C/C++ 枚举中是什么意思?
- 这个枚举在析构函数中的用途是什么
- 是空枚举 ( enum{}; ) 可移植的
- C++中默认初始化的全局强类型枚举是什么
- 这是使用枚举数的好方法
- 这个 C++ [out] 参数是指向枚举的指针,还是只是一个值
- 最佳实践是使用枚举使用按位参数组合