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