我在自定义命名空间中声明了一个 Integer 类:
namespace MyNameSpace
{
class Integer {};
}
我正在以这样的方法使用它:
void someMethod()
{
using namespace MyNameSpace;
SomeClass x(Integer("some text", 4));
}
这给
10> error C2872: 'Integer' : ambiguous symbol
10> could be 'g:\lib\boost\boost_1_47_0\boost/concept_check.hpp(66) : boost::Integer'
10> or '[my file] : MyNameSpace::Integer'
我已经通过全文搜索在我的代码库中搜索了“命名空间提升”和“使用提升”,但没有找到像“使用命名空间提升;”这样的行。这得到了测试的支持
void someMethod()
{
shared_ptr<int> x;
using namespace MyNameSpace;
//SomeClass x(Integer("some text", 4));
}
给
error C2065: 'shared_ptr' : undeclared identifier
然而
void someMethod()
{
boost::shared_ptr<int> x;
using namespace MyNameSpace;
//SomeClass x(Integer("some text", 4));
}
编译。
是否有任何其他原因导致“歧义符号”错误发生?