复制构造函数,对象,指针

时间:2010-04-17 00:54:09

标签: c++ pointers constructor object copy

假设我有这个:

SolutionSet(const SolutionSet &solutionSet) {
    this->capacity_ = solutionSet.capacity_;
    this->solutionsList_ = solutionSet.solutionsList_; // <--
}

solutionsList_vector<SomeType*> vect*。复制该向量的正确方法是什么(我想这样做我做得不对......)?

2 个答案:

答案 0 :(得分:0)

您现在所做的是解决方案列表的“浅层复制” - 原始向量包含对解决方案的引用列表,复制的向量将包含对相同解决方案的引用。这可能就是你在这里所需要的。

如果不是,并且您确实需要深层复制,即您希望在创建第二个解决方案集时重复每个解决方案,则需要确保您的SomeType具有明确定义的复制构造函数,然后手动遍历新向量中的所有项目并进行复制:

for (int i = 0; i < solutionsList.size(); i++) 
     solutionsList[i] = new SomeType(solutionsList[i]);

或使用指针容器,如已经建议的那样(虽然可能是一种过度杀伤)。

答案 1 :(得分:0)

  

vector<SomeType*> vect*。复制该载体的正确方法是什么[...]?

正确的方法是不要动态分配对象的哑指针。使它成为一个智能指针,这一切变得更加容易。