继承类之间的枚举的最佳实践是什么?

What is the best practice for enums between inherited classes?

本文关键字:是什么 枚举 之间 继承 最佳      更新时间:2023-10-16

我已经阅读了许多帖子(即基本枚举类继承),这些帖子显示了诱骗编译器扩展派生类以使枚举继续的方法。

我看到这种方法的问题是,如果你需要在基类中有一个新的枚举,这会抛弃派生类的编号系统。 只要您不需要读取保存的文件,这可能就可以了。

但是,如果类结构用于序列化文件怎么办? 对我来说,这似乎是一个问题。 处理这种情况的建议最佳做法是什么?

只需给你的值两个部分:它们属于哪个类,以及枚举的值。 喜欢这个:

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值使用显式的、更高的值。