看起来创建一个临时的shared_ptr以检查weak_ptr是否指向有效对象有点低效。 我不想访问对象本身。 这是因为我有一个从shared_ptr向量返回weak_ptr的函数,如果它返回一个空的weak_ptr,则意味着该GUID下不存在该对象。 所以我只是在测试对象是否存在。 有没有...
今天关于std::weak_ptr和std::owner_less在关联容器std::set和std::map中的使用,出现了一些问题。有一些帖子认为在std::set中使用weak_ptr是不正确的,因为如果弱指针过期,它将产生未定义行为。这是正确的吗?
如果我理解正确,weak_ptr不会增加所管理对象的引用计数,因此它不表示所有权。它只是让您访问由其他人管理的对象,该对象的生存期由其他人控制。 因此,我不明白为什么可以从shared_ptr构造weak_ptr,但不能从unique_ptr构造。 有人能简要解释一下吗?
考虑以下代码:#include <memory> #include <iostream> using namespace std; struct MySharedStruct { int i; }; void print_value_of_i(weak_ptr...
在C++0x中,std::shared_ptr有一个std::static_pointer_cast方法,但是std::weak_ptr没有类似的方法。这是有意为之,还是一个疏忽呢?如果是疏忽,我该如何定义一个合适的函数呢?
class MyClass { public: MyClass(std::weak_ptr<MyClass> parent){} } 我想要做这个:auto newInstance = std::make_shared<MyClass>(nullptr); 或...
我开始学习C++11的智能指针,但我没有看到std::weak_ptr的任何有用的用途。有人可以告诉我什么时候使用std::weak_ptr是有用/必要的吗?
在我的当前项目中,我广泛使用了boost::shared_ptr。 最近,我的团队成员也开始使用weak_ptr。我不知道应该在什么情况下选择哪个。 除此之外,如果我想将weak_ptr转换为shared_ptr,我该怎么做?通过对weak_ptr进行锁定以创建shared_ptr会影响到...
由于我的新手声誉,我无法回复这个Thread,具体来说是接受的答案: 我从未使用过boost::intrusive智能指针,但如果您使用shared_ptr智能指针,您可以为缓存使用weak_ptr对象。 当系统决定释放它们的内存时,这些weak_ptr指针不会被视为引用,但只要对象尚未被...