32得票2回答
共享指针和弱引用指针失败的琐碎情况

我在使用shared_ptr和weak_ptr以及enable_shared_from_this时遇到了问题。 当我搜索我看到的症状时,每个人都建议“当没有shared_ptr实例拥有您的对象时,您不能使用shared_from_this()。 但这不是我的情况。 考虑以下代码: #i...

30得票2回答
为什么我不能将nullptr转换为weak_ptr<>?

class MyClass { public: MyClass(std::weak_ptr&lt;MyClass&gt; parent){} } 我想要做这个:auto newInstance = std::make_shared&lt;MyClass&gt;(nullptr); 或...

28得票1回答
返回空的shared_ptr是否正确?

例如,有一个函数用于查找对象并返回shared_ptr,如果未发现该对象,则必须以某种方式指示未发现任何对象。std::vector&lt;std::shared_ptr&gt; Storage::objects; std::shared_ptr&lt;Object&gt; Storage:...

26得票1回答
为什么std::weak_ptr<>不提供bool转换?

C++11的std::shared_ptr&lt;&gt;提供了一种bool运算符。 operator unspecified-bool-type() const; 由于类型bool的隐式转换存在危险, 所以它不是一个简单的operator bool() const。 为什么std::...

26得票1回答
std::unique_ptr vs std::shared_ptr vs std::weak_ptr vs std::auto_ptr vs 原始指针 (注意:std::auto_ptr已被弃用,不建议在新代码中使用)

相较于使用原始指针所采用的一些高级技术(但不仅限于此),每种智能指针的等效用法是什么? 我的理解很少,但从我所了解到的: 原始指针:只有在您确实非常非常非常非常地知道自己在做什么并已经在接口后小心隐藏了用法时才使用。 std::auto_ptr:已过时,不要使用。 std::unique...

24得票2回答
弱指针、make_shared和内存释放

当存在至少一个weak_ptr时,shared_ptr的控制块将保持活动状态。如果使用make_shared创建共享指针,则意味着整个对象的内存都被保留。(对象本身会被正确析构,但由于控制块和对象的内存是一起分配的,就像make_shared一样,它们只能一起释放。) 我的理解正确吗? 这...

23得票5回答
关于weak_ptr的线程安全性

std::shared_ptr&lt;int&gt; g_s = std::make_shared&lt;int&gt;(1); void f1() { std::shared_ptr&lt;int&gt;l_s1 = g_s; // read g_s } void f2() { ...

21得票3回答
有没有一种方法可以使成员函数在构造函数中不可调用?

我有一个成员函数(方法),它使用std::enable_shared_from_this::weak_from_this() 简而言之: weak_from_this 返回到这个的 weak_ptr。 一个注意点是它不能从构造函数中使用。 如果有人从继承类的构造函数中使用我的函数,其中内部的...

20得票7回答
绑定到weak_ptr

有没有一种方法可以将 std::bind 绑定到 std::weak_ptr?我想存储一个“弱函数”回调,当被调用者被销毁时自动“断开连接”。 我知道如何使用 shared_ptr 创建 std::function:std::function&lt;void()&gt; MyClass::G...

19得票3回答
弱指针使用的 static_pointer_cast

在C++0x中,std::shared_ptr有一个std::static_pointer_cast方法,但是std::weak_ptr没有类似的方法。这是有意为之,还是一个疏忽呢?如果是疏忽,我该如何定义一个合适的函数呢?