shared_ptr在哪里?

几个小时后,我非常沮丧,试图findshared_ptr所在的位置。 我看到的例子都没有显示完整的代码来包含shared_ptr (和working)的头文件。 简单地说stdtr1<memory>完全没有帮助! 我已经下载提升和所有,但仍然不显示! 有人可以帮助我确切地知道在哪里find它吗?

感谢让我发泄我的挫折!

编辑:我看到我的标题已经改变。 对于那个很抱歉。 所以…这也是因为我不清楚shared_ptr是“C ++版本依赖” – >这就是为什么我没有说明我的环境 – >因此,可能为什么我很难find它。

我正在MSVS2008上工作。

编辑2:我不知道为什么,但我包括[内存]和[boost / tr1 / memory.hpp]和[boost / tr1 / tr1 /内存],而无处不在寻找shared_ptr ..当然,我couldn “T。

感谢所有的答复。

至less有三个地方可以findshared_ptr

  1. 如果你的C ++实现支持C ++ 11(或者至lessC ++ 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>

加速入门

如果你想用Boost TR1来代替它

shared_ptr示例

对于带有function包更新的VS2008,可以在命名空间std :: tr1下findshared_ptr。

 std::tr1::shared_ptr<int> MyIntSmartPtr = new int; 

如果您已将提升安装path(例如@ C:\Program Files\Boost\boost_1_40_0 )添加到您的IDE设置:

 #include <boost/shared_ptr.hpp> 

如果你的浏览器是shared_ptr ,你可以通过googlesearchshared_ptr ,跟随文档的链接,find答案,然后打开一个完整的例子。

无论如何,下面是我刚刚破解的一个简单的完整工作示例:

 #include <boost/shared_ptr.hpp> struct MyGizmo { int n_; }; int main() { boost::shared_ptr<MyGizmo> p(new MyGizmo); return 0; } 

为了使#includefind头文件,库显然需要在searchpath中。 在MSVC中,您可以在“项目设置”>“configuration属性”>“C / C ++”“其他包含目录”中进行设置。 在我的情况下,这是设置为C:\Program Files (x86)\boost\boost_1_42