复制boost :: shared_ptr的内容 - 有办法

Copying the Contents of a boost::shared_ptr - is there a way?

本文关键字:boost shared ptr 复制      更新时间:2023-10-16

我想复制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的使用_Count会增加,因为它现在在std ::列表中具有另一个引用。

的一部分是。

我想做的是,仅将 value的内容复制到一个新的共享_ptr中,一个带有新计数,然后将其插入列表中。

因此,use_count-在函数末尾(离开示波器)将是valuevalue的原始use_count;以及将插入列表中的新的共享_ptr的1个use_count。

您可以用make_shared克隆共享指针:

push_back(boost::make_shared<decltype(*value)>(*value));

在C 03上:

push_back(boost::make_shared<typename T_Value::element_type>(*value));