将原始指针返回到智能指针

时间:2018-04-10 18:47:40

标签: c++ c++11 smart-pointers

我有一个这样的脚本:

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位于脚本中的智能指针中。反正有没有将原始指针内容返回智能指针?然后为智能指针创建一个向量?

希望改述使其更加清晰

干杯

1 个答案:

答案 0 :(得分:2)

您可以使用std::unique_ptr::get()返回基础对象的原始指针,同时将所有权留给智能指针。请记住,由于所有权仍然相同,unique_ptr仍会尝试在其范围结束时删除该对象,因此不要让someOperation删除它!

http://en.cppreference.com/w/cpp/memory/unique_ptr/get