复制矢量指针给出了Seg故障。 (C ++)

时间:2012-03-18 19:06:12

标签: c++ pointers vector segmentation-fault

我遇到了一个奇怪的问题。我正在尝试为我的类编写一个复制构造函数,它包含一个整数和一个指针向量,指向同一个类的其他对象。

class A {

    private:
        int id;
        std::vector<A*> relatedObjects;
}

在main函数中,我使用默认构造函数创建了A类的对象。然后另外两个动态分配的A对象

A master;
A* slave1 = new A;
A* slave2 = new A;

然后我使用一个公共函数将两个从属对象添加到向量中,该函数只是将指针推送到向量。

addSlave(A* slave) {

    this->relatedObjects.push_back(slave);
}

现在我遇到的问题是当我想从main函数制作master的副本时。在尝试复制指针向量时,我遇到了段错误。我试图做一个浅拷贝,因为我希望新对象引用相同的从属对象,而不是一个孤立的副本。我的拷贝构造函数如下:

A::A(const A& orig) {

    this->id = orig.id;
    this->relatedObjects = orig.relatedObjects;
}

我也试过迭代迭代复制指针的向量,但这仍然导致相同的段错误。根据关于向量的文档,“=”运算符“将向量x的副本指定为向量对象的新内容”,在这种情况下意味着将指针复制到新的向量对象。这就是我想要的。

我不确定为什么我会遇到这个问题,我确信这就是seg故障背后的原因,因为当向量副本被注释掉时,seg故障消失了。如果有人可以帮忙解决这个问题,我将非常感激。

谢谢。

0 个答案:

没有答案