У меня есть вектор shared_ptr<SomeClass>
с именем allParts
.Вектор shared_ptr дает seg-ошибку, когда экземпляры в векторе доступны
код, как показано ниже:
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
}
}
Я использовал вектор указателей несколько раз прежде, но это первый раз я использую 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>();
}
}
Как выглядит 'function_which_returns_shared_ptr_someclass()'? – syntagma
Ошибка в коде не отображается, вполне возможно, в функции, которая возвращает 'shared_ptr'. –
Пожалуйста, укажите [mcve]. Мне не нужно было рассказывать об этом кому-то с речью на 1к. –