我有这样的脚本:
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