考慮下面的枚舉聲明:枚舉初始化後聲明
enum Foo { Bar, Baz, Qux };
現在考慮我想統計員(酒吧,巴茲和Qux)有一定的價值。我可以通過簡單地在聲明中初始化他們解決這個問題:
enum Foo { Bar = 4, Baz = 2, Qux = 42 };
現在,如果我不想怎麼知道這些價值觀?例如,使用其他庫中的其他預定義值時,或者對兩個統計員使用相同的值時。 Exemples:
enum Foo { Bar = MY_LIB_BAR, Baz = MY_LIB_BAZ, Qux = MY_LIB_QUX };
enum Foo { Bar = 0, Baz = 42, Qux = 0 };
我想這樣的事情:
// In header
enum Foo { Bar, Baz, Qux };
// In source
Foo { Bar = 0, Baz = 42, Qux = 0 };
// ...or...
Foo::Bar = 0, Foo::Baz = 42, Foo::Qux = 0;
顯然,沒有我嘗試做的工作。
所以,我的問題是:有沒有一種方法來初始化它們的聲明之外統計員?如果是這樣,如何做到這一點,例如在一個相應的.cpp源文件中?
編輯:我可以指定我的枚舉的基礎類型。考慮到C++ 11允許前向聲明,我認爲我的問題可以解決,因爲枚舉變成了一個完整的類型。
這些真正的枚舉或者你只是想要一些常量? –
那些必須是枚舉。 – Nelfeal
那麼恐怕你不能做你想做的事。 –