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