我目前正在处理一个处理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