108

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

谢谢你让我发泄我的不满!

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

我正在研究 MSVS2008。

编辑 2:我不知道为什么,但我在到处寻找 shared_ptr 时包括 [memory] ​​和 [boost/tr1/memory.hpp] 和 [boost/tr1/tr1/memory] ​​.. 当然,我不能不。

感谢所有的回复。

4

4 回答 4

172

至少有三个地方可以找到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++'s libstdc++) 中。Boost 还提供了一个您可以使用的 TR1 实现。

  3. boost::shared_ptr否则,您可以获取 Boost 库并使用<boost/shared_ptr.hpp>.

于 2010-05-27T03:09:17.340 回答
7

提升入门

如果您想从 Boost TR1 改用它

shared_ptr 示例

于 2010-05-27T03:02:32.737 回答
6

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

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

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

#include <boost/shared_ptr.hpp>
于 2010-05-27T03:06:46.387 回答
2

如果您正在寻找 bor boostshared_ptr,您可以通过谷歌搜索 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 中,您可以在 Project Settings>Configuration Properties>C/C++>Additional Include Directories 中进行设置。就我而言,这设置为C:\Program Files (x86)\boost\boost_1_42

于 2010-05-27T14:13:09.630 回答