15得票5回答
从原始指针创建weak_ptr<>

我想将原始指针成员包装为智能指针,以防止在开发类内部删除。指针下的对象的所有者位于类外。因此,似乎boost::shared_ptr和std::auto_ptr不适合。以下是一个简化的示例:class Foo { boost::weak_ptr&lt;Bar&gt; m_bar; publ...

7得票1回答
为什么在锁定weak_ptr时会出现访问冲突?

我有一个std::weak_ptr。在尝试使用底层对象之前,我会对其进行锁定以获取shared_ptr: auto foo_sharedptr = foo_weakptr.lock(); if (foo_sharedptr != nullptr) { // do stuff with...

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

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

18得票3回答
为什么shared_ptr的引用计数对象还需要跟踪指向该对象的weak_ptr数量?

您好,我正在阅读有关C ++的shared_ptr的此文档和其他一些文档,并且它们似乎都表明除了指向分配对象的shared_ptr数量外,引用计数对象还必须跟踪指向对象的weak_ptr指针的数量。我的问题是为什么?根据我的理解,weak_ptr是非拥有的,因此如果指向对象的shared_pt...

17得票4回答
对象的析构函数中`weak_ptr::expired`的行为

Consider the following code: #include &lt;iostream&gt; #include &lt;memory&gt; using namespace std; class T; std::weak_ptr&lt;T&gt; wptr; class...

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...

46得票4回答
提升(boost)、共享指针(shared ptr)和弱指针(weak ptr)?什么时候使用哪一个?

在我的当前项目中,我广泛使用了boost::shared_ptr。 最近,我的团队成员也开始使用weak_ptr。我不知道应该在什么情况下选择哪个。 除此之外,如果我想将weak_ptr转换为shared_ptr,我该怎么做?通过对weak_ptr进行锁定以创建shared_ptr会影响到...

15得票1回答
过期的weak_ptr能否与未初始化的区分开来?

例如:std::weak_ptr&lt;int&gt; wp1(std::make_shared&lt;int&gt;()); std::weak_ptr&lt;int&gt; wp2; assert(PointsToValidOrExpiredObject(wp1)); assert(!P...

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

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

14得票1回答
存储指向自身的弱引用

我正在使用一个部分由一个喜欢为简单问题提供过度复杂解决方案的人实现的代码库(例如,仅为一对类型实例化的具有两个参数的模板类)。她做的一件事是在智能指针中创建对象,然后让该对象存储对自身的弱引用。class MyClass { //... boost::weak_ptr&lt;M...