我正在尝试用 C++ 编写一个足球队注册类 (SocReg),当球队数组已满时,它会将所有数据复制到一个新数组中,再增加 10 个可用空间,销毁现有数组,然后继续工作. 然而,这些似乎没有保存在数组中,只有新的被注册,旧的被复制为“”什么都没有。
Team * tempTeams = new Team[theSize+10];
for(int i = 0; i < theSize; i++){
teams[i] = tempTeams[i];
}
theSize += 10;
delete[] teams;
teams = tempTeams;
unused++;
teams[unused+1] = Team(teamName,color);
这是我在团队类中的复制构造函数
Team::Team(Team& toCopy){
tName = toCopy.tName;
tCol = toCopy.tCol;
unused = toCopy.unused;
roster = new Player*[50];
for(int i = 0; i < 50; i++)
roster[i] = toCopy.roster[i];
}
有没有做错什么?
最佳答案
你应该改变
for(int i = 0; i < theSize; i++){
teams[i] = tempTeams[i];
}
到
for(int i = 0; i < theSize; i++){
tempTeams[i] = teams[i];
}
因为此刻您正在以错误的方向复制数据,有效地存储了空字符串。
关于c++ - 对象不复制。我该怎么做才能复制它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33594560/