【发布时间】:2014-03-06 15:11:03
【问题描述】:
我想复制我在函数中得到的 boost::shared_ptr 的内容
void virtual Add(const T_Value& value)
{
push_back(value);
if (_limit != -1 && int(size()) > _limit)
erase(begin());//,begin() + (_limit >> 1));
}
其中 T_Value 是 boost::shared_ptr<ValueType>
我的问题是,使用这种方法,value 的 use_count 显然会增加,因为它现在在 std::list 中有另一个引用,这个函数是其中的一部分。
然而,我想要做的只是将value 的内容复制到一个新的 shared_ptr 中,一个具有新计数的,然后将其插入到列表中。
因此,函数末尾的 use_count - (离开作用域)将保持 value 的原始 use_count 为 value;以及将插入到列表中的新 shared_ptr 的 use_count 为 1。
【问题讨论】:
-
如果您的
ValueType有一个复制构造函数,则使用现有值(最好通过make_shared)构造一个new值,并保留shared_ptr中的结果指针。跨度>
标签: c++ boost shared-ptr