导出类的命名空间的一部分

时间:2010-10-13 15:20:37

标签: c++ enums namespaces using-statement

我的课程包含enum

class appearance{
  // ... stuff ...
  enum color {BLUE, RED, GREEN};
};

我想附加部分命名空间(使用using),以便我可以将BLUE的值简称为BLUE,而不是appearance::BLUE 。同时,我想将enum保留在class{}内,因为我认为这是最自然的。我尝试了namespaceusing的各种组合,但无济于事。

任何建议???

3 个答案:

答案 0 :(得分:3)

我不认为可以做到。 AFAIK,您可以在here规定的其他类或结构中使用using appearance::color

  

A类中的使用声明可以   命名以下之一:

     
      
  • A

  • 的基类成员   
  • 匿名联盟的成员,该联盟是A基类的成员

  •   
  • 枚举类型的枚举器,它是A的基类的成员

  •   

答案 1 :(得分:1)

我认为你不能用类范围的枚举来做到这一点。实现类似的东西的唯一方法可能是将枚举包含在其自己的不同命名空间中,然后在需要的地方使用枚举。

编辑:在这个问题How do you import an enum into a different namespace in C++?中,我展示了一种将枚举从一个名称空间导入另一个名称空间的可能方法,但我认为这种类案例不会起作用(无论如何)。

答案 2 :(得分:1)

正如Jacob所说,你不能直接这样做,但是你可以通过将枚举封装在它自己的命名空间中来使它工作。

namespace enums{
        enum color
        {BLUE
        ,RED
        ,GREEN};
} // namespace enums


using namespace enums;
class Foo
{
    int Bar(){return BLUE;}
}

这样的事情应该有用......