不同文件中同一命名空间中2个不同枚举中的相同标识符

1 c++

我在两个不同的文件中使用相同的命名空间.在那些文件中,我有2枚枚举.我需要在这些枚举中使用相同的标识符.有办法吗?

在第一个文件first.h

...
namespace foo
{
 enum direction
 {
   NONE, 
   RIGHT    
   ...
 }
}

In second file
second.h

...
namespace foo
{
 enum reverse
 {
   NONE,  
   LEFT,   
   ...
 }
}
Run Code Online (Sandbox Code Playgroud)

这是一个示例代码.我需要重用"NONE".我需要visual studio 2008的代码.(不能使用:枚举类)

Tri*_*dle 5

如果你可以使用C++ 11,实现你想要的最好的方法是使用"强类型枚举",使用enum class关键字声明,即

enum class direction
{
    NONE,
    LEFT
};

enum class reverse
{
    NONE,
    RIGHT
};
Run Code Online (Sandbox Code Playgroud)

在其余的代码中,您可以将枚举数称为ns::direction::NONEns::reverse::NONE(如果您熟悉该语言,则在C#中).

如果您没有可用的C++ 11,那么您可以通过在内部命名空间中声明匿名枚举来模拟相同的事情,例如

namespace direction {
     enum {
         NONE,
         LEFT
     };
}

namespace reverse {
    enum {
        NONE,
        RIGHT
    };
}
Run Code Online (Sandbox Code Playgroud)

再次,你然后引用direction::NONEreverse::NONE,所以没有冲突.