【发布时间】:2012-11-01 08:18:24
【问题描述】:
必须创建一个临时的 shared_ptr 只是为了查看 weak_ptr 是否指向一个有效的对象,这似乎有点低效。我什至不想访问该对象。这是因为我有一个函数从 shared_ptr 的向量返回一个weak_ptr,如果它返回一个空的weak_ptr,那么这意味着该对象不存在该GUID。
所以我只是在测试一个对象是否存在。
是否有另一种方法可以在不创建 shared_ptr 的情况下检查 weak_ptr 是否为空?
【问题讨论】:
-
你最初是如何得到弱指针的? 那是必须改变的界面。
-
lock() 返回一个 shared_ptr 这就是我发表这篇文章的原因。
-
以后问之前用cppreference。
-
@Mooing Duck 你是什么意思?您的评论含糊不清。
-
@Pubby 我做了,我也阅读了 MSDN。两个页面都没有提到空的测试,而是说 expired() 测试管理对象是否已被删除。这与测试从未有任何内容的weak_ptr 是不同的上下文。但是现在人们已经引起了我的注意,它起作用了。即使名称 expired() 并不能真正解释我使用它的上下文,但如果它有效,它就有效。
标签: c++ shared-ptr weak-ptr