san*_* mk 0 c++ vector shared-ptr
我有一个shared_ptr<SomeClass>名为的矢量allParts.
代码如下:
void function thisIsWhereItStarts(){
vector<shared_ptr<SomeClass> > allParts;
for(i=0;i<N;i++){
allParts.push_back(function_which_returns_shared_ptr_someclass());
}
// Then I use this vector as below:
for(vector<shared_ptr<SomeClass> >::iterator it = allParts.begin(); it!=allParts.end(); it++){
(*it)->function_of_SomeClass() ; // THIS GIVES SEGMENTATION FAULT
}
}
Run Code Online (Sandbox Code Playgroud)
我以前曾多次使用指针向量,但这是我第一次使用shared_ptr.
返回的函数shared_ptr是这样的:
shared_ptr<SomeClass> function_which_returns_shared_ptr_someclass(){
shared_ptr<SomeClass> part(new SomeClass);
if(part->some_function(some_parameter)){
return part;
}else{
return shared_ptr<SomeClass>();
}
}
Run Code Online (Sandbox Code Playgroud)
你push_back甚至是空的shared_ptr.然后你取消引用shared_ptr向量中的每一个.取消引用空shared_ptr将失败.要么不是push_back空指针,要么不取消引用它们.
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |