代码之家  ›  专栏  ›  技术社区  ›  Jake

共享资源在哪里?

  •  97
  • Jake  · 技术社区  · 15 年前

    几个小时后,我试图找到共享资源的位置,现在我很沮丧。我看到的例子中没有一个显示完整的代码来包含 shared_ptr (和工作)。简单陈述 std , tr1 <memory> 根本没有帮助!我下载了所有的助推器,但仍然没有出现!有人能告诉我在哪里能找到它吗?

    谢谢你让我发泄我的沮丧!

    编辑: 我看到我的头衔被改了。很抱歉。 所以…这也是因为我不清楚SyrdypTR是“C++版本依赖的”——这就是为什么我没有陈述我的环境的原因。

    我在MSVS2008上工作。

    编辑2: 我不知道为什么,但我在到处寻找共享资源的时候,包括了[memory]和[boost/tr1/memory.hpp]以及[boost/tr1/tr1/memory]。当然,我不能。

    谢谢你的回复。

    4 回复  |  直到 12 年前
        1
  •  163
  •   James McNellis    13 年前

    你至少可以在三个地方找到 shared_ptr :

    1. 如果C++实现支持C++ 11(或者至少C++ 11) SelddPPTR ) std::shared_ptr 将在中定义 <memory> .

    2. 如果C++实现支持C++ Tr1库扩展,那么 std::tr1::shared_ptr 可能会在 <存储器& GT; (微软Visual C++)或 <tr1/memory> (G++的libstdc++)。Boost还提供了一个可以使用的TR1实现。

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

        3
  •  6
  •   Georg Fritzsche    15 年前

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

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

    属于

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

    #include <boost/shared_ptr.hpp>
    
        4
  •  3
  •   Sebastian Mach    12 年前

    如果你看起来像个傻瓜 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;配置属性& g/c+c+gt;附加包含目录。在我的情况下,这个设置为 C:\Program Files (x86)\boost\boost_1_42