Как сказал вам Джеймс, вы должны использовать std::list<Star>::iterator
, чтобы вы могли изменить объект, вызвав метод или получив доступ к его переменным-членам.
Это будет примерно так:
void UniverseManager::ApplySpeedVector()
{
std::list <Star>::iterator iStar;
for (iStar = mStars.begin(); iStar != mStars.end(); ++iStar)
{
iStar->SetLocationData(iStar->mLocation += iStar->mSpeed);
}
}
Тем не менее, если вы хотите улучшить свой код, вы можете предпочесть иметь геттер для доступа к местоположению и скорости:
void UniverseManager::ApplySpeedVector()
{
std::list <Star>::iterator iStar;
for (iStar = mStars.begin(); iStar != mStars.end(); ++iStar)
{
iStar->SetLocationData(iStar->GetLocationData() + iStar->GetSpeed());
}
}
В любом случае вы должны использовать неконстантный итератор.