对象不复制。我该怎么做才能复制它们?
Object not copying. What can I do to copy them?
我正在尝试用 C++ 编写一个足球队寄存器 class (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);
这是我在团队 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];
}
有没有做错什么?
您正在将元素从 tempTeams
复制到 teams
;应该是反过来的。
std::vector
会自动为您完成所有这些工作。
你应该改变
for(int i = 0; i < theSize; i++){
teams[i] = tempTeams[i];
}
至
for(int i = 0; i < theSize; i++){
tempTeams[i] = teams[i];
}
因为此时您正在以错误的方向复制数据,有效地存储了空字符串。
我正在尝试用 C++ 编写一个足球队寄存器 class (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);
这是我在团队 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];
}
有没有做错什么?
您正在将元素从 tempTeams
复制到 teams
;应该是反过来的。
std::vector
会自动为您完成所有这些工作。
你应该改变
for(int i = 0; i < theSize; i++){
teams[i] = tempTeams[i];
}
至
for(int i = 0; i < theSize; i++){
tempTeams[i] = teams[i];
}
因为此时您正在以错误的方向复制数据,有效地存储了空字符串。