我对编程比较陌生。我被赋予了创建游戏的任务,该游戏允许用户创建不同的足球运动员,将他们组合在一起并根据球员模拟球队之间的比赛。统计。为此,我决定在一个.txt文件中保存有关每个玩家的信息,并在单独的.txt文件中保存有关每个单独团队的信息。 我不会详细了解我的Player类,因为它似乎工作正常。这些是它的成员(在头文件中):
class Player {
string m_name;
int m_age;
string m_team;
string m_position;
double m_speed;
它的主要2个功能。我排除了主持人和吸气者:
void save ();
static vector<Player*> load();
&#34;保存&#34;将播放器的信息保存到.txt文件中,并且&#34;加载&#34;使用指向.txt文件的每个玩家的指针创建一个向量
现在我上课时遇到了麻烦 - 团队。
class Team{
string m_name;
vector<Player*> m_players;
bool m_type;
double m_coach;
功能选择玩家 - 它允许用户从Players.txt中所有玩家的列表中为他的团队选择玩家
void Team :: choosePlayers (){
vector<Player*> temp = Player::load();
vector<Player*> choice;
vector<int> numbers;
vector<string> strings;
string userChoice;
for (int i=0; i < temp.size(); i++){
cout<<i+1<<". "<<temp[i]->getName()<<" "<<temp[i]->getAge()<<" "<<temp[i]->getPosition()<<" "<<temp[i]->getSpeed()<<endl;
}
cout<< "CHOOSE YOUR PLAYERS BY PRESSING THEIR CORRESPONDIG NUMBERS. SEPARATE DIFFERENT PLAYERS WITH SPACES."<<endl;
getline (cin, userChoice);
strings = splitString(userChoice);
numbers = convertToInt(strings);
for (int q=0; q < numbers.size(); q++){
choice.push_back(temp[(numbers[q])-1]);
}
this->m_players = choice;
}
(splitToString和convertToInt只是我用来将用户的输入分开的函数 - 例如&#34; 1 5 7&#34;变成具有3个整数的矢量{1,5,7})
void save (){
char* dir = new char[199];
char* cstrName = new char[m_name.length()];
strcpy(dir, "D:/C++ projects/Project project project/Team data/ "); //the directory of the save locations
strcpy(cstrName, m_name.c_str());
strcat (dir, cstrName);
strcat (dir, ".txt");
ofstream osF (dir);
osF<<m_name<<endl;
osF<<m_type<<endl;
osF<<m_coach<<endl;
for(int i=0; i < m_players.size(); i++){
osF<<m_players[i]->getName()<<endl;
osF<<m_players[i]->getAge()<<endl;
osF<<m_players[i]->getTeam()<<endl;
osF<<m_players[i]->getPosition()<<endl;
osF<<m_players[i]->getSpeed()<<endl;
}
}
它将有关团队及其玩家的信息保存到一个与团队名称相同的.txt文件中。
最后是它的访问修饰符
void Team :: setName(){
string temp;
getline(cin, temp);
this->m_name = temp;
}
void Team :: setType(){
bool temp = 0;
cin>>temp;
this->m_type = temp;
}
void Team :: setCoach(){
double temp = 0;
cin>>temp;
this->m_coach = temp;
}
这就是问题所在。当我运行函数choosePlayers,任何访问修饰符或单独保存(类Team)时,它们都按预期工作。但是,当我尝试运行时,
Team obj1;
obj1.setName();
obj1.choosePlayers();
obj1.save;
我有时会遇到运行时错误c0000005(我已经读过动态内存覆盖或访问不存在的数组索引)或者selectPlayers似乎没有正确执行:它显示所有可用玩家的列表,但它不会让用户输入他的选择。程序只返回0,就像成功完成一样。
我现在几个小时都在查看我的代码,我似乎无法找到问题所在。如果有人看一眼并指出我正确的方向,我将不胜感激