C++ 共享ptr在哪里?
我现在很沮丧,因为我花了几个小时试图找到共享的ptr的位置。我看到的示例中没有一个完整的代码包含C++ 共享ptr在哪里?,c++,boost,c++11,shared-ptr,smart-pointers,C++,Boost,C++11,Shared Ptr,Smart Pointers,我现在很沮丧,因为我花了几个小时试图找到共享的ptr的位置。我看到的示例中没有一个完整的代码包含shared\u ptr(和working)的标题。简单地说明std、tr1和根本没有帮助!我已经下载了boots,但是它仍然没有出现!有人能告诉我在哪里能找到它吗 谢谢你让我发泄我的沮丧 编辑: 我看到我的头衔被改变了。很抱歉。 所以这也是因为我不清楚shared_ptr是否“依赖于C++版本”-->这就是我没有说明我的环境的原因-->因此可能是我很难找到它的原因 我正在MSVS2008上工作 编辑
shared\u ptr
(和working)的标题。简单地说明std
、tr1
和
根本没有帮助!我已经下载了boots,但是它仍然没有出现!有人能告诉我在哪里能找到它吗
谢谢你让我发泄我的沮丧
编辑:
我看到我的头衔被改变了。很抱歉。
所以这也是因为我不清楚shared_ptr是否“依赖于C++版本”-->这就是我没有说明我的环境的原因-->因此可能是我很难找到它的原因
我正在MSVS2008上工作
编辑2:
我不知道为什么,但我在到处寻找共享的ptr时包括了[memory]和[boost/tr1/memory.hpp]和[boost/tr1/tr1/memory]。。当然,我不能
谢谢您的回复。
对于具有功能包更新的VS2008,可以在命名空间std::tr1下找到共享的ptr
std::tr1::shared_ptr<int> MyIntSmartPtr = new int;
您至少可以在三个地方找到
共享\u ptr
:
<> L> > P >如果C++实现支持C++ 11(或者至少是C++ 11代码> SydDypTrp/代码>),则<代码> STD::SyrdYPPTR < /C> >将在<代码> <代码> > < /P> 中定义。
<> LI> < P>如果C++实现支持C++ Tr1库扩展,那么<代码> STD::StR1::SyrdYPPTR 可能会在<代码> <代码>(微软Visual C++)或<代码> <代码>(G++的LISSTDC ++)。Boost还提供了一个可以使用的TR1实现
Boost::shared\u ptr
,可以在
中找到#include <boost/shared_ptr.hpp>
struct MyGizmo
{
int n_;
};
int main()
{
boost::shared_ptr<MyGizmo> p(new MyGizmo);
return 0;
}
#包括
结构MyGizmo
{
int n_;
};
int main()
{
boost::shared_ptr p(新MyGizmo);
返回0;
}
为了让
#include
找到标题,库显然需要位于搜索路径中。在MSVC中,您可以在项目设置>配置属性>C/C++>其他包含目录中设置此选项。在我的例子中,这被设置为C:\ProgramFiles(x86)\boost\boost\u 1\u 42
,如果您能够正确地陈述您的设置,比如什么编译器和boost版本/安装路径,可能会有所帮助,除非您使用的是C++0x,共享的\u ptr
。这是一种非常普遍的现象,有些人会将其视为标准,即使它还没有上市。在不知道您的环境是用于7.5位洗碗机芯片的GCC、128位大型机专有编译器还是XCode版本的GCC的情况下,您认为我们应该如何回答这个问题?只是想补充一些关于我所面临问题的信息。。如果你想用c++0x标准编译,你需要添加“-std=c++0x”作为g++的参数。如果你在MSVC上,那么你只需要“#include”(对于gcc,我有一个用于搜索的CMake Find(),这样我就可以声明预处理器定义包含任何一个,而不是作为首选的tr1而不是boost-注意boost是“hpp”,而tr1是“.h”-在Gentoo/Fedora/Debian上进行了验证-当然,还要确保VS 2008也有#包括内存管理功能(单独使用),您是获得了“功能包”还是安装了SP1?如果是这样,那么这里的第2部分适用于您,请使用名称空间tr1
。谢谢。这就像魔术一样。我不知道为什么,但我在到处寻找共享的ptr时。。当然,我不能。再次感谢。我已经远离C++,惊讶地发现(在CLANV3.1)<代码> SyddYPPT/<代码>仍然坐在<代码> Tr1< /Cord>命名空间中。有什么想法吗?@hiwaylon:你是用-std=c++11
编译的吗?@JamesMcNellis Yessir,不幸的是,这导致了对其他依赖项的不满,我无法继续(考虑到时间限制)。如果-std=c++11是诀窍,那么当我能够返回项目时,我可以满怀信心地继续。非常感谢。
#include <boost/shared_ptr.hpp>
struct MyGizmo
{
int n_;
};
int main()
{
boost::shared_ptr<MyGizmo> p(new MyGizmo);
return 0;
}