У меня есть следующая часть программы, и я не могу понять, что там происходит. Я генерирую некоторый объект Entity, я вижу, что он хорош и полностью инициализирован, затем я нажимаю этот объект в пустой вектор _goodPopulation и вижу, что наверняка _goodPopulation [0] тот же путь инициализирован, но после того, как управление программой вернется к другому методу в этом class _goodPopulation [0] вдруг стал неинициализированным ... Почему?Внезапно элемент вектора стал неинициализированным
//.h
std::vector<Entity*> _goodPopulation;
...
//.cpp
bool ChallengeManager::SelectGoodEnteties(double targetEffectivity)
{
for (...)
{
Entity& ent = _entityGenerator->GenerateEntity();
if (ent.GetEffectiveness() > 0) {
_goodPopulation.push_back(&Entity(ent)); //coping Entity that was generated
Entity* ent2 = _goodPopulation[0];// Just for debugging - Entity object is correct there and fully initialized
if (ent.GetEffectiveness() > targetEffectivity)
{
return true;
}
}
}
return false;
}
Entity* ChallengeManager::AchiveEffectivity(double targetEffectivity)
{
while (true)
{
if (SelectGoodEnteties(targetEffectivity)) {
Entity* ent2 = _goodPopulation[0]; // Here _goodPopulation[0] Entity suddenly became uninitialized, all it fields are random numbers
return _goodPopulation[_goodPopulation.size() - 1];
}
}
}
Вы используете многопоточность? –
@rockstartprogrammer. Нет, программа очень проста –
Мне любопытно, вызов '_entityGenerator-> GenerateEntity()', возможно, вы также можете показать функцию GenerateEntity? –