我在“Foo”类(下)中定义了一组枚举值。
namespace Fii
{
class Foo
{
struct Bar
{
enum Baz
{
BAZ1,
BAZ2,
BAZ3
};
};
};
};
我正在使用结构来缩小 Baz 枚举值的范围,并显示有一组相关值。
我的目标是将枚举类型中的值分配给变量。使用上面的类定义,可以做到这一点:
Fii::Foo::Bar::Baz myValue = Fii::Foo::Bar::BAZ1 (Works in both C++98 and C++11)
但是,我觉得:
- 乍一看,myValue似乎被初始化为Fii::Foo::Bar但这只是因为 enum 是在父级中对相关常量进行分组的黑客(本例中为Bar)
为了提高准备,II 将代码重构为:
namespace Fii
{
class Foo
{
enum Baz
{
BAZ1,
BAZ2,
BAZ3
};
};
};
使用这个新的类定义,可以做到这一点:
Fii::Foo::Baz myValue = Fii::Foo::Baz::BAZ1 (Works in C++11 only)
Fii::Foo::Baz myValue = Fii::Foo::BAZ1 (Should work on C++98 and C++11 - not tested)
Q1) 为什么Fii::Foo::Bar::Baz myValue = Fii::Foo::Baz::BAZ1只适用于 C++11 ?
Q2) 在 C++98 中,有没有办法编写Fii::Foo::Baz myValue = Fii::Foo::Baz::BAZ1?您可以在类定义中进行任何您喜欢的更改。
环境: - 支持 C++11 的 Clang 编译器 - Xcode 4 - Mac OS OS 10.8