Extending enum in derived classes

前端 未结 8 2466
陌清茗
陌清茗 2021-02-13 03:53

I have a class hierarchy, and each class in it has an exception class, derived in a parallel hierarchy, thus...

class Base
{
};

class Derived : public Base
{
};         


        
8条回答
  •  情深已故
    2021-02-13 04:19

    There isn't any native way to do it, but it can be easily done with defines: Here is little example:

    #define _Enum1_values a, b, c, d
    
    enum Enum1 {
        _Enum1_values
    };
    
    // there aren't strongly typed enums
    class A {
    public:
        enum Enum2 {
            _Enum1_values, e, f
        };
    };
    
    // there aren't strongly typed enums
    class B {
    public:
        enum Enum3 {
            _Enum1_values, g, h
        };
    };
    
    
    #include 
    
    int main() {
        std::cout << "Enum1::d: " << d << '\n';
        std::cout << "Enum2::d: " << A::d << '\n';
        std::cout << "Enum2::e: " << A::e << '\n';
        std::cout << "WARNING!!!:  Enum2::e == Enum3::g: " << (A::e == B::g) << '\n';
    }
    

提交回复
热议问题