c++ - 在派生类中覆盖/重新实现枚举

标签 c++ oop enums

我正在为我的大学项目开发​​一个数据库程序。 我有代表 Invoice 的基类和代表 CorrectedInvoice 的派生类。最后,我想将数据存储到文件中,因此我使用枚举来指示它们存储的顺序:

enum FIELD_ORDER
{
    ID, 
    IVOICE_NUM, 
    TIME, 
    CLIENT_ID,
    COST,

    SIZE // fields' length
};

在派生类中,我们有附加字段指示我们要更正哪个发票,并且字段的顺序也会更改。 我尝试用 #ifdef block 包围枚举,但预处理器始终首先通过基类文件运行,因此我无法为每个类声明所需的枚举。我怎样才能达到这样的效果呢?有没有更好的方法来存储订单?我在(反)序列化中使用它,我希望它在循环/开关语句中灵活且可用。

@编辑 我忘了提到字段顺序在运行时不会改变,所以这就是我想出枚举的原因。

最佳答案

只是一个建议,在类中声明枚举,如下所示,

class BaseClass
{
 public:
    enum FIELD_ORDER
    {
      ID, 
      IVOICE_NUM, 
      TIME, 
      CLIENT_ID,
      COST,

      SIZE // fields' length
   };
};

class DerivedClass : public BaseClass
{
 public:
    enum FIELD_ORDER
    {
       //Derived Version
    };
};

然后使用以下方式访问FIELD_ORDER对应版本

BaseClass::FIELD_ORDER

关于c++ - 在派生类中覆盖/重新实现枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30464247/

相关文章:

c++ - 是否可以创建一个通用方法或类来创建任何类的 "new"实例?

c# - .NET 中是否有一种功能,方法可以通过该功能确定哪个类调用了它

c# - 自动选择和创建类对象

java - 如果消除了对多重继承的限制,那么 Java 中的接口(interface)和抽象类有什么区别?

java - 如何找到响应中的最大值?

c++ - 在 C++ 中使用类似枚举的数据

python - 在Python中加载共享库时 undefined symbol

c++ - 指向具有数组索引运算符重载的类的指针

c++ - 使用 Visual C++ 从命令行编译

c++ - 限制用户输入