我目前正在處理一個處理People類對象向量的項目。該程序編譯並運行得很好,但是當我使用調試器時,它會在試圖用PersonWrangler對象做任何事情時死亡。我目前有三個不同的課程,一個是人,一個是集體處理所有人的personwrangler,一個是處理遊戲輸入和輸出的遊戲課程。C++中的向量錯誤
編輯:我的基本問題是瞭解爲什麼它會在調用outputPeople時死去。另外我想了解爲什麼我的程序完全按照它應該的方式工作,除非我使用調試器。 outputPeople函數以我想要的方式工作。
編輯2:調用堆棧有3個壞呼叫它們是:
- 的std ::矢量> ::開始(這= 0xbaadf00d)
- 的std ::矢量> ::大小(此= 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);
}
你的問題是什麼? – 2010-04-20 21:19:27
連接矢量在哪裏? – 2010-04-20 21:20:17
你有什麼理由使用這麼多的指針?原始指針的使用在C++中是不鼓勵的。 – 2010-04-20 21:21:24