尝试编译与vs2010一起使用shared_ptr的旧项目。 所以,我预编译了头文件(stdafx.h):
..
using namespace std; ..#include" boost / shared_ptr"
使用命名空间提升;
以后在代码中我强烈使用shared_ptr spObject;
我应该在stdafx.h中更改什么,以便我不需要在代码* shared_ptr *中的任何地方替换为* some_namespace :: shared_ptr *?
是否有可能没有boost / boost :: tr1 / std :: tr1 / std?
现在我有很多错误:
错误C2872:' shared_ptr' :暧昧的象征 可能是' k:\ boost10 \ boost \ smart_ptr \ shared_ptr.hpp(165):boost :: shared_ptr' 或者&c; \ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ memory(1418):std :: tr1 :: shared_ptr'
答案 0 :(得分:4)
不要将using namespace
放在标题中,因为您发现它可能会破坏后面的标题,并且因为您无法更改这些标题,所以您无能为力。
在功能范围内,您可以使用using声明来消除歧义:
void f()
{
using std::tr1::shared_ptr;
shared_ptr<int> p;
}
但是这在全局命名空间中不起作用,因为你已经用粗心的使用指令污染了这个范围。