我很好地理解了C++"使用"声明和指令是如何工作的.但是,我对此感到难过......也许这不可能?我想避免质量我的枚举变量:
namespace Foo {
class MyClass {
public:
enum MyEnum { X, Y, Z };
}
}
Run Code Online (Sandbox Code Playgroud)
现在,从该命名空间外部,我希望能够做到这样的事情:
using Foo::MyClass.MyEnum;
MyEnum letter = MyEnum::x;
Run Code Online (Sandbox Code Playgroud)
但显然那不是这样做的方法吗?我打赌这是可能的,但我的符号是错误的...我也尝试使用Foo :: MyClass :: MyEnum,但编译器认为Foo :: MyClass是一个命名空间.
补充:正如你所看到的,完全宣布一切都变得很烦人......
Foo::MyClass::MyEnum value = Foo::MyClass::X;
Run Code Online (Sandbox Code Playgroud)
这不能直接回答你的问题,但是如果你想节省击键,你可以尝试使用typedef.
typedef Foo::MyClass::MyEnum MyClassEnum;
Run Code Online (Sandbox Code Playgroud)
顺便说一下,看起来你的问题已经在Stack Overflow上被问过了.从答案到这个问题:
类没有定义命名空间,因此"使用"在这里不适用.
C++03 不支持完全限定enum类型,但它是 MSVC 扩展。C++0x 将制定此标准,我相信您可以在 C++0x 中using实现enum。然而,在C++03中,我不相信你的问题能够得到解决。
| 归档时间: |
|
| 查看次数: |
4134 次 |
| 最近记录: |