为简单向量实现复制构造函数

时间:2015-11-12 15:42:52

标签: c++

我一直在尝试创建一个可以使用我的程序的复制构造函数,但是,当我运行我的代码时,它总是给我一个错误:

1.) "member 'lengthOfArray' was not initialized in this constructor"
2.) "member 'lengthOfArray' was not initialized in this constructor"

现在我理解上面两个错误发生了什么,但是我不明白的两个错误是这两个错误:

3.) previous definition is here
4.) redefinition of 'copy'

以下是我目前的情况:

simpleVector(const simpleVector& copy) {
        simpleVector cy;
        simpleVector copy(cy);
    }

现在我正在尝试实施的指示是:<​​/ p>

您自己的执行深层复制的复制构造函数,即创建一个动态数组并复制另一个作为参数传递给复制构造函数的数组中的元素。

我以前从来没有创建过复制构造函数,也没有在课堂上覆盖它,所以我不确定如何实现它,但我搜索了许多来源并没有太多运气。在复制构造函数中使用for循环是否典型?任何有关我做错的帮助都将不胜感激。我的整个代码:

#include <iostream>
using namespace std;

// simpleVector template
template<class Temp>

class simpleVector {

// private members
private:
    Temp* tempPointer;
    int lengthOfArray;

public:

    // default no-arg constructor
    simpleVector() {
        tempPointer = NULL;
        lengthOfArray = 0;
    }

    // single argument constructor
    simpleVector(int dynamicArray) {
        lengthOfArray = dynamicArray;
        tempPointer = new Temp[lengthOfArray];
    }

    // Copy constructor
    simpleVector(const simpleVector& copy) {
        simpleVector cy;
        simpleVector copy(cy);
    }

};

1 个答案:

答案 0 :(得分:2)

simpleVector(const simpleVector& copy) {  // copy decleared here
    simpleVector cy;
    simpleVector copy(cy);                // Being defined here again.
}

这就是编译器所抱怨的。

您需要以下内容:

simpleVector(const simpleVector& copy) : lengthOfArray(copy.lengthOfArray),
                                         tempPointer(new int[copy.lengthOfArray])
{
  // Add code to copy the data from copy.tempPointer to this->tempPointer.
}