复制构造函数C ++中自定义类的动态数组

时间:2018-06-04 04:38:58

标签: c++ arrays class dynamic

我试图通过在我的另一个类中定义此类的指针来创建我创建的类的动态数组,然后当我创建第二个类的复制构造函数时,IDE会告诉我指针类型不兼容

class myClass2 {
private:
        int *size;
        string name;
        myClass1 *list;
        ...
public:
       myClass2(const char &name,const int size);
       ...
};

myClass2::myClass2(const char &name,const int size){
...
       this->size = new int(size);
       myClass1 * pArray[size]; 
       for(int i = 0; i < size; i++){
           pArray[i] = new myClass1();
       }
       list = pArray; //FIXME:incompatible pointer type
};

2 个答案:

答案 0 :(得分:3)

你写过:

myClass1 *list;

这意味着list的值将是myClass1对象的地址。 在myClass2的构造函数中,您写道:

list = pArray;

pArray不是myClass1对象的地址。您的pArray是一个用于包含myClass2*的数组。所以你得到错误incompatible pointer type

答案 1 :(得分:0)

您试图从MyClass1类型指向MyClass2类型。这就是为什么存在不兼容的类型错误。要么为MyClass2扩展MyClass1并使用多态。 Myclass1 * pArray[size];

PS:建议使用堆栈存储变量,除非它不是本地变量。你可以做 int size; this->size = size;