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

时间:2015-01-20 01:48:52

标签: c++ class inheritance enums

我已经阅读了一些帖子(即Base enum class inheritance),这些帖子显示了欺骗编译器扩展派生类的方法,以便继续枚举。

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

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

1 个答案:

答案 0 :(得分:0)

只需赋予您的值两部分:它们属于哪个类,以及枚举值。像这样:

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