Динамический массив пользовательского класса в конструкторе копирования C ++ - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь создать динамический массив класса, который я создал, определив указатель этого класса в моем другом классе, затем, когда я создаю конструктор копирования второго класса, 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 голосов
/ 04 июня 2018

Вы пытаетесь указать тип MyClass2 из типа MyClass1.Вот почему есть несовместимая ошибка типа.Либо расширьте MyClass1 для MyClass2 и используйте полиморфизм.Myclass1 * pArray[size];

PS: рекомендуется использовать стек для хранения переменных, если он не является локальным.Вы могли бы сделать, int size; this->size = size;

0 голосов
/ 04 июня 2018

Вы написали:

myClass1 *list;

Это означает, что значение list будет адресом объекта myClass1.В конструкторе myClass2 вы написали:

list = pArray;

Но pArray не является адресом myClass1 объекта.ваш pArray - это массив, содержащий myClass2*.Итак, вы получили ошибку incompatible pointer type.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...