gpt4 book ai didi

visual-studio-2010 - tr1:boost vs vs2010,使用没有命名空间的shared_ptr

转载 作者:行者123 更新时间:2023-12-04 16:59:01 24 4
gpt4 key购买 nike

试图用 vs2010 编译有很多 shared_ptr 用途的旧项目。
所以,我有预编译的头文件(stdafx.h):

..
using namespace std; ..

#include "boost/shared_ptr"
using namespace boost;



后来在代码中我大量使用了 shared_ptr spObject;

我应该在 stdafx.h 中更改什么,以便我不需要将代码中的所有地方 *shared_ptr* 替换为 *some_namespace::shared_ptr*?
是否可以避免 boost/boost::tr1/std::tr1/std 的命名空间冲突?

现在我有很多错误:

error C2872: 'shared_ptr' : ambiguous symbol could be 'k:\boost10\boost\smart_ptr\shared_ptr.hpp(165) : boost::shared_ptr' or 'c:\program files (x86)\microsoft visual studio 10.0\vc\include\memory(1418) : std::tr1::shared_ptr'

最佳答案

不要放using namespace在标题中,正如您发现的那样,它可以破坏后面的标题,并且由于您无法更改这些标题,因此您无能为力。

在函数范围内,您可以使用 using 声明来消除歧义:

void f()
{
using std::tr1::shared_ptr;
shared_ptr<int> p;
}

但这在全局命名空间中不起作用,因为您已经用粗心的 using 指令污染了该范围。

关于visual-studio-2010 - tr1:boost vs vs2010,使用没有命名空间的shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9350549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com