shared_ptr在哪里?

时间:2010-05-27 02:58:32

标签: c++ boost c++11 shared-ptr smart-pointers

我在几个小时后试图找到shared_ptr所在的位置时非常沮丧。我看到的所有示例都没有显示包含shared_ptr(和工作)标题的完整代码。简单地说明stdtr1<memory>根本没有帮助!我已经下载了增强功能,但仍然没有显示!有人可以通过告诉确切的位置来帮助我吗?

感谢您让我发泄我的挫折!

编辑: 我看到我的标题已被更改。对于那个很抱歉。 所以...也是因为我不清楚shared_ptr是“依赖于C ++版本” - &gt;这就是为什么我没有陈述我的环境 - &gt;因此可能为什么我很难找到它。

我正在研究MSVS2008。

编辑2: 我不知道为什么,但我在包括[memory]和[boost / tr1 / memory.hpp]和[boost / tr1 / tr1 / memory],同时寻找shared_ptr的所有地方..当然,我不能。

感谢所有回复。

4 个答案:

答案 0 :(得分:165)

至少有三个地方可以找到shared_ptr

  1. 如果您的C ++实现支持C ++ 11(或至少C ++ 11 shared_ptr),则std::shared_ptr将定义<memory>

  2. 如果您的C ++实现支持C ++ TR1库扩展,则std::tr1::shared_ptr可能位于<memory>(Microsoft Visual C ++)或<tr1/memory>(g ++的libstdc ++)。 Boost还提供了一个可以使用的TR1实现。

  3. 否则,您可以获取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)

如果您正在寻找boostshared_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