1
template<typename T> class SomeClass{
public:
enum SomeEnum{ SOME_FLAG};
};
SomeClass::SomeEnum some_enum = SomeClass::SomeEnum::SOME_FLAG; //NO
SomeClass<int>::SomeEnum some_enum = SomeClass::SomeEnum::SOME_FLAG; //NO
SomeClass<int>::SomeEnum some_enum = SomeClass<int>::SomeEnum::SOME_FLAG; //YES
这不能编译,因为C++ - 从模板类使用枚举没有模板参数
类SomeClass的无模板参数使用
有没有办法/解决方法,使用它没有模板参数,有点让那个枚举全局,所以它不依赖于参数。
这并不是说我不能输入它们,但它们可能很长很复杂,代码会很难阅读,我不能在这里使用类似auto的东西。 (我是新来的模板很抱歉,如果这个问题是瘸子。)
为什么你就不能定义类(模板)外枚举?在命名空间范围内。 (我希望你的项目有一个命名空间......) – Brian
@Brian简单地在类的外面定义它们意味着它们可以与项目中的其他枚举名称冲突。 (除非我将它定义为“enum SomeClass_SomeEnum {...}”,但我想要比这更优雅的东西。) – AdyAdy
@AdyAdy如果问题是名称冲突,则可以使用范围枚举。 – skypjack