我正在尝试用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 Class中的复制构造函数
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];
}
这里做错了什么?
答案 0 :(得分:3)
你应该改变
for(int i = 0; i < theSize; i++){
teams[i] = tempTeams[i];
}
到
for(int i = 0; i < theSize; i++){
tempTeams[i] = teams[i];
}
因为目前你正在以错误的方向复制数据,所以有效地存储空字符串。
答案 1 :(得分:2)
您正在将元素从tempTeams
复制到teams
;它应该是相反的。
std::vector
会自动为您完成所有这些操作。