【发布时间】:2016-02-15 16:13:00
【问题描述】:
我想以这种方式使用智能指针:
using namespace std;
shared_ptr<string> foo;
weak_ptr<string> bar (foo);
foo = make_shared<string>("some string");
cout << *bar.lock(); // SIGSEGV
线索是如何在不构造对象的情况下初始化shared_ptr 的对象管理器(本例中为string)。甚至可能吗?我可以使用对象的默认 ctor,然后使用复制/移动分配。但是可能存在一些更优雅的解决方案吗?
对我来说,对象不会被初始化是值得的——如果我用空值初始化 shared_ptr,那将是逻辑上的谎言。
【问题讨论】:
标签: c++ shared-ptr smart-pointers weak-ptr