【发布时间】:2012-09-12 05:46:19
【问题描述】:
我在“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 但这只是因为枚举是对父(Bar 在这种情况下)
为了提高准备,我将代码重构为:
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 10.8
【问题讨论】: