我想将原始指针成员包装为智能指针,以防止在开发类内部删除。指针下的对象的所有者位于类外。因此,似乎boost::shared_ptr和std::auto_ptr不适合。以下是一个简化的示例:class Foo { boost::weak_ptr<Bar> m_bar; publ...
我有一个std::weak_ptr。在尝试使用底层对象之前,我会对其进行锁定以获取shared_ptr: auto foo_sharedptr = foo_weakptr.lock(); if (foo_sharedptr != nullptr) { // do stuff with...
例如,有一个函数用于查找对象并返回shared_ptr,如果未发现该对象,则必须以某种方式指示未发现任何对象。std::vector<std::shared_ptr> Storage::objects; std::shared_ptr<Object> Storage:...
您好,我正在阅读有关C ++的shared_ptr的此文档和其他一些文档,并且它们似乎都表明除了指向分配对象的shared_ptr数量外,引用计数对象还必须跟踪指向对象的weak_ptr指针的数量。我的问题是为什么?根据我的理解,weak_ptr是非拥有的,因此如果指向对象的shared_pt...
Consider the following code: #include <iostream> #include <memory> using namespace std; class T; std::weak_ptr<T> wptr; class...
相较于使用原始指针所采用的一些高级技术(但不仅限于此),每种智能指针的等效用法是什么? 我的理解很少,但从我所了解到的: 原始指针:只有在您确实非常非常非常非常地知道自己在做什么并已经在接口后小心隐藏了用法时才使用。 std::auto_ptr:已过时,不要使用。 std::unique...
在我的当前项目中,我广泛使用了boost::shared_ptr。 最近,我的团队成员也开始使用weak_ptr。我不知道应该在什么情况下选择哪个。 除此之外,如果我想将weak_ptr转换为shared_ptr,我该怎么做?通过对weak_ptr进行锁定以创建shared_ptr会影响到...
例如:std::weak_ptr<int> wp1(std::make_shared<int>()); std::weak_ptr<int> wp2; assert(PointsToValidOrExpiredObject(wp1)); assert(!P...
C++11的std::shared_ptr<>提供了一种bool运算符。 operator unspecified-bool-type() const; 由于类型bool的隐式转换存在危险, 所以它不是一个简单的operator bool() const。 为什么std::...
我正在使用一个部分由一个喜欢为简单问题提供过度复杂解决方案的人实现的代码库(例如,仅为一对类型实例化的具有两个参数的模板类)。她做的一件事是在智能指针中创建对象,然后让该对象存储对自身的弱引用。class MyClass { //... boost::weak_ptr<M...