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



我有这样的脚本:

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 位于脚本中的智能指针中。有没有办法让原始指针内容回到智能指针?然后为智能指针制作一个向量?

希望改写使其更清晰

干杯

您可以使用

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

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

相关内容

  • 没有找到相关文章

最新更新