В настоящее время я работаю над проектом, который работает с вектором объектов класса People. Программа компилируется и работает просто отлично, но когда я использую отладчик, она умирает при попытке что-либо сделать с объектом PersonWrangler. В настоящее время у меня есть 3 разных класса, один для человека, личный спорщик, который обрабатывает всех людей вместе, и игровой класс, который обрабатывает ввод и вывод игры.
Edit: мой основной вопрос заключается в том, чтобы понять, почему он умирает, когда он вызывает outputPeople. Также я хотел бы понять, почему моя программа работает именно так, как и должна, если я не использую отладчик. Функция outputPeople работает так, как я задумал.
Редактировать 2: в стеке вызовов 3 неверных вызова:
- std :: vector> :: begin (this = 0xbaadf00d)
- std :: vector> :: size (this = 0xbaadf00d)
- PersonWrangler :: outputPeople (это = 0xbaadf00d)
Соответствующий код:
class Game
{
public:
Game();
void gameLoop();
void menu();
void setStatus(bool inputStatus);
bool getStatus();
PersonWrangler* hal;
private:
bool status;
};
, который вызывает outputPeople, где он быстро умирает от ошибки baadf00d.
void Game::menu()
{
hal->outputPeople();
}
где hal - объект типа PersonWrangler
class PersonWrangler
{
public:
PersonWrangler(int inputStartingNum);
void outputPeople();
vector<Person*> peopleVector;
vector<Person*>::iterator personIterator;
int totalPeople;
};
и функция outputPeople определяется как
void PersonWrangler::outputPeople()
{
int totalConnections = 0;
cout << " Total People:" << peopleVector.size() << endl;
for (unsigned int i = 0;i < peopleVector.size();i++)
{
sort(peopleVector[i]->connectionsVector.begin(),peopleVector[i]->connectionsVector.end());
peopleVector[i]->connectionsVector.erase( unique (peopleVector[i]->connectionsVector.begin(),peopleVector[i]->connectionsVector.end()),peopleVector[i]->connectionsVector.end());
peopleVector[i]->outputPerson();
totalConnections+=peopleVector[i]->connectionsVector.size();
}
cout << "Total connections:" << totalConnections/2 << endl;
}
Где инициализируется hal
Game::Game()
{
PersonWrangler* hal = new PersonWrangler(inputStartingNum);
}