typedef boost::shared_ptr<SomeData> data_ptr;
data_ptr cached_ptr; // class member
bool someWork(data_ptr& passed_ptr)
{
// must copy passed_ptr = cached_ptr under some conditions
// without pointing at the same memory
// I saw somewhere that I should do
// passed_ptr.reset(new SomeData(???))
// I don't have a "reset" on passed_ptr
}
我查看了文档; 拷贝和转换构造函数
shared_ptr(shared_ptr const & r); // never throws
template<class Y> shared_ptr(shared_ptr<Y> const & r); // never throws
Requires: Y* should be convertible to T*.
Effects: If r is empty, constructs an empty shared_ptr; otherwise,
constructs a shared_ptr that shares ownership with r.
我不知道那是如何工作的 - 它是这样的吗?
passed_ptr = shared_ptr(cached_ptr);
? const应该放在哪里?它们共享所有权是什么意思?如果我修改“passed_ptr”,它不是一个拷贝,“cached_ptr”也会受影响吗?
我找不到例子...请帮忙。
谢谢。
reset()
成员函数,可以在这里看到。你是不是没有正确使用它?你得到了什么编译器错误? - Andy Prowlboost::make_shared<Data>(*cached_ptr)
(别忘了*
)。另外,如果可以的话,建议切换到 C++11,它有std::shared_ptr
;) - Andy Prowl