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

Dynamic array of a custom class in a copy constructor C++

本文关键字:动态 数组 自定义 构造函数 C++ 复制      更新时间:2023-10-16

我正在尝试通过在另一个类中定义该类的指针来创建我创建的类的动态数组,然后当我创建第二个类的复制构造函数时,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
};

你写过:

myClass1 *list;

这意味着list的值将是 myClass1 对象的地址。 在《myClass2》的构思中,你写道:

list = pArray;

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

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

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