У меня есть вектор:член Доступ к итератора вектора unique_ptr
std::vector<std::unique_ptr<MyAbstract>> myList;
Я хочу, чтобы получить доступ к элементу «идентификатор» в цикле и удалить определенный элемент:
for (auto it = myList.begin(); it != myList.end();)
{
if (it->id == 2)
{
it = myList.erase(it);
break;
}
else
++it;
}
эта линия ...
if (it->id == 2)
дает мне ошибку:
'class std::unique_ptr' has no member named 'id'
Это похоже на работу:
if (it->get()->id == 2)
Интересно, почему ?! Вот полный код: http://ideone.com/kFohfA
Спасибо, я знал, что это из-за базового типа, но я думал -> будет волшебным образом указывает на MyAbstract внутри unique_ptr, поэтому мне не нужно будет использовать get(). – DoubleVoid
@DoubleVoid Если бы это было так, вы не смогли бы легко получить доступ к элементам 'std :: unique_ptr'. – NathanOliver