对象不复制。我该怎么做才能复制它们?

时间:2015-11-08 13:38:07

标签: c++ oop deep-copy

我正在尝试用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];
}

这里做错了什么?

2 个答案:

答案 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会自动为您完成所有这些操作。