我有一个这样的脚本:
void main(){
vector<int*> objectCollection;
objectCollection.push_back(1);
objectCollection.push_back(5);
objectCollection.push_back(-4);
vector<int*> newCollection
for(auto* itr: *objectCollection){
std::unique_ptr<int>* obj(new int);
someoperation(*itr,obj);
newCollection->push_back(itr);
}
void someoperation(*int raw, &int processed){
std::unique_prt<int> k(new int);
k= raw+1;
processed = k.release();
}
从这里开始,某些操作会向obj返回一个“原始指针”,但obj位于脚本中的智能指针中。反正有没有将原始指针内容返回智能指针?然后为智能指针创建一个向量?
希望改述使其更加清晰
干杯
答案 0 :(得分:2)
您可以使用std::unique_ptr::get()
返回基础对象的原始指针,同时将所有权留给智能指针。请记住,由于所有权仍然相同,unique_ptr
仍会尝试在其范围结束时删除该对象,因此不要让someOperation
删除它!