shared_ptr在哪里?

Jak*_*ake 102 c++ boost smart-pointers shared-ptr c++11

经过几个小时试图找到shared_ptr所在的位置后,我现在非常沮丧.我看到的所有示例都没有显示包含shared_ptr(和工作)标题的完整代码.只是陈述std,tr1<memory>没有任何帮助!我已经下载了增强功能,但仍然没有显示!有人可以通过告诉确切的位置来帮助我吗?

谢谢你让我发泄我的挫折!

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

我正在研究MSVS2008.

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

感谢所有的回复.

Jam*_*lis 167

您可能会发现至少有三个地方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>.

  • 对于VS 2008,您是否获得了"功能包"或安装了SP1?如果是这样,那么第2部分适用于你,使用命名空间`tr1`. (3认同)
  • @hiwaylon:你是用`-std = c ++ 11`编译的吗? (3认同)

Yee*_*Fei 6

对于具有功能包更新的VS2008,可以在命名空间std :: tr1下找到shared_ptr.

std::tr1::shared_ptr<int> MyIntSmartPtr = new int;
Run Code Online (Sandbox Code Playgroud)

如果您已将boost安装路径(例如@ C:\Program Files\Boost\boost_1_40_0)添加到IDE设置中:

#include <boost/shared_ptr.hpp>
Run Code Online (Sandbox Code Playgroud)