【发布时间】:2012-07-11 19:18:40
【问题描述】:
我在代码库中有一个类似于以下内容的库:
namespace rat {
...
enum myEnum {
BLUE,
RED
}
...
} //namespace rat
稍后我尝试使用之前的库在代码库中编译一个应用程序,当我使用命名空间 rat(代码库主命名空间)说 BLUE 可能是 rat::myEnum rat::BLUE 或 @ 时,它会警告我有歧义987654324@ rat::enums::BLUE 来自我不熟悉(而且不是我的)的其他文件,它有一个枚举 Freq 和一个名为 BLUE 的人在命名空间 rat 内的命名空间枚举中......
用户代码中有没有办法说明我现在想要哪个?还是我必须在说命名空间 mylib 中嵌套 mylibs 枚举,然后说 rat::enums::BLUE 或 rat::mylib::BLUE ?
【问题讨论】:
-
如果你有 C++11,
enum class会创建一个新的作用域。 -
那么,你把
using namespace指令放在哪里了?似乎所有编译器投诉都在单独的命名空间中(rat、rat::enums)。 -
我没有 C++11,并且应用程序有一个 using namespace rat。这将 myEnum 和 enums::Freq 纳入范围,两者都包含 BLUE
标签: c++ enums namespaces