C ++ в std :: list не имеет оператора [].
Кроме того, это std :: list и НЕ std: List .
Таким образом, код, вероятно, пытается преобразовать список в Производное * и затем, вероятно, попытается использовать оператор [] для результата.
Так что просто найдите другой способ хранения данных (например, std::map<int,Base*>
).
Примерно так:
std::for_each(myList.begin(), myList.end(), DoSomething);
void DoSomething(Base* item)
{
Derived* d = dynamic_cast<Derived*>(item);
}
Или прямой подход (если у вас нет правильных макросов):
for (std::vector<Base*>::iterator item = myList.begin(); item != myList.end(); ++item ) { //Iterate through 'myList'
Derived* d = dynamic_cast<Derived*>(*item );
}