C++ - Use enum from template class without template parameter

前端 未结 2 588
旧巷少年郎
旧巷少年郎 2020-12-20 19:01
template class SomeClass{

public:
    enum SomeEnum{ SOME_FLAG};

};

SomeClass::SomeEnum some_enum =      SomeClass::SomeEnum::SOME_FLAG;       /         


        
相关标签:
2条回答
  • 2020-12-20 19:54

    If you want to enclose your enum in a class definition for reasons (I cannot say what's the real problem), you can still introduce one more class that isn't a class template and contains the enum, then inherit from that with your class template. That's all.
    As an example:

    struct SomeBase {
        enum SomeEnum { SOME_FLAG };
    };
    
    template<typename>
    struct SomeClass: SomeBase {
        // ...
    };
    

    Use this:

    SomeBase::SomeEnum::SOME_FLAG;
    

    Instead of this:

    SomeClass::SomeEnum::SOME_FLAG;
    

    Whenever you want to access the enum directly.
    Something like the following remains valid anyway:

    SomeClass<void>::SomeEnum foo = SomeClass<void>::SomeEnum::SOME_FLAG;
    
    0 讨论(0)
  • 2020-12-20 19:57
    using MySomeClass = SomeClass<int>;
    
    MySomeClass::SomeEnum foo = MySomeClass::SomeEnum::SOME_FLAG;
    
    0 讨论(0)
提交回复
热议问题