weak_ptr<void> 如何比较是否相等
时间: 2023-08-15 12:07:14 浏览: 91
`weak_ptr<void>` 和 `weak_ptr<T>` 的比较方式是一样的,可以使用 `lock()` 函数获取 `std::shared_ptr<void>`,然后再通过 `std::shared_ptr<void>` 进行比较。
示例代码如下:
```
std::weak_ptr<void> wp1;
std::weak_ptr<void> wp2;
std::shared_ptr<int> sp1 = std::make_shared<int>(42);
wp1 = sp1;
wp2 = sp1;
if (wp1.lock() == wp2.lock()) {
std::cout << "wp1 and wp2 point to the same object" << std::endl;
} else {
std::cout << "wp1 and wp2 point to different objects" << std::endl;
}
```
在上面的代码中,首先创建了两个 `weak_ptr<void>` 对象 `wp1` 和 `wp2`,然后通过 `make_shared` 创建了一个 `shared_ptr<int>` 对象 `sp1`,并将其赋值给 `wp1` 和 `wp2`,此时 `sp1` 的引用计数为 2。
然后通过 `lock()` 函数获取 `wp1` 和 `wp2` 所指向的对象的 `shared_ptr<void>`,并将它们进行比较。由于 `wp1` 和 `wp2` 所指向的对象是同一个,因此比较结果为相等。
阅读全文