我在几个小时后试图找到shared_ptr所在的位置时非常沮丧。我看到的所有示例都没有显示包含shared_ptr
(和工作)标题的完整代码。简单地说明std
,tr1
和<memory>
根本没有帮助!我已经下载了增强功能,但仍然没有显示!有人可以通过告诉确切的位置来帮助我吗?
感谢您让我发泄我的挫折!
编辑: 我看到我的标题已被更改。对于那个很抱歉。 所以...也是因为我不清楚shared_ptr是“依赖于C ++版本” - &gt;这就是为什么我没有陈述我的环境 - &gt;因此可能为什么我很难找到它。
我正在研究MSVS2008。
编辑2: 我不知道为什么,但我在包括[memory]和[boost / tr1 / memory.hpp]和[boost / tr1 / tr1 / memory],同时寻找shared_ptr的所有地方..当然,我不能。
感谢所有回复。
答案 0 :(得分:165)
至少有三个地方可以找到shared_ptr
:
如果您的C ++实现支持C ++ 11(或至少C ++ 11 shared_ptr
),则std::shared_ptr
将定义<memory>
。
如果您的C ++实现支持C ++ TR1库扩展,则std::tr1::shared_ptr
可能位于<memory>
(Microsoft Visual C ++)或<tr1/memory>
(g ++的libstdc ++)。 Boost还提供了一个可以使用的TR1实现。
否则,您可以获取Boost库并使用boost::shared_ptr
,<boost/shared_ptr.hpp>
可以找到它。
答案 1 :(得分:7)
答案 2 :(得分:6)
对于具有功能包更新的VS2008,可以在命名空间std :: tr1下找到shared_ptr。
std::tr1::shared_ptr<int> MyIntSmartPtr = new int;
的
如果您在IDE设置中添加了增强安装路径(例如@ C:\Program Files\Boost\boost_1_40_0
):
#include <boost/shared_ptr.hpp>
答案 3 :(得分:3)
如果您正在寻找boost的shared_ptr,您可以通过googling shared_ptr轻松找到答案,按照指向文档的链接,并提取完整的工作示例例如this。
在任何情况下,这是一个简单的完整工作示例,我刚刚入侵:
#include <boost/shared_ptr.hpp>
struct MyGizmo
{
int n_;
};
int main()
{
boost::shared_ptr<MyGizmo> p(new MyGizmo);
return 0;
}
为了让#include
找到标题,库显然需要位于搜索路径中。在MSVC中,您可以在项目设置&gt;配置属性&gt; C / C ++&gt;其他包含目录中进行设置。就我而言,这设置为C:\Program Files (x86)\boost\boost_1_42