在弱指针上调用函数
Calling a function on weak pointer
我写了下面的代码:
#include <iostream>
#include <memory>
using namespace std;
class Foo
{
int x = 0;
public:
int get() const { return x; }
void set(int x) { this->x = x; }
};
int main(){
auto sp = shared_ptr<Foo>(new Foo());
weak_ptr<Foo> wp;
wp = sp;
return 0;
}
我想调用共享指针 sp
和 wp
上设置的方法,正确的调用方法是什么?我发现 sp->set(5);
适用于共享指针,但同样不适用于弱指针。
您不能对 weak_ptr 进行操作。如果 shared_ptr 已被删除,这就像取消引用已被删除的原始指针。
每当你想访问其中包含的指针时,你会锁定它以验证你的 shared_ptr 仍然存在。
if (auto sp = wp.lock()) {
sp->set(10);
} else {
// sp no longer exists!
}
我写了下面的代码:
#include <iostream>
#include <memory>
using namespace std;
class Foo
{
int x = 0;
public:
int get() const { return x; }
void set(int x) { this->x = x; }
};
int main(){
auto sp = shared_ptr<Foo>(new Foo());
weak_ptr<Foo> wp;
wp = sp;
return 0;
}
我想调用共享指针 sp
和 wp
上设置的方法,正确的调用方法是什么?我发现 sp->set(5);
适用于共享指针,但同样不适用于弱指针。
您不能对 weak_ptr 进行操作。如果 shared_ptr 已被删除,这就像取消引用已被删除的原始指针。
每当你想访问其中包含的指针时,你会锁定它以验证你的 shared_ptr 仍然存在。
if (auto sp = wp.lock()) {
sp->set(10);
} else {
// sp no longer exists!
}