Массивы не конструктор копирования и, кроме того параметра _id
в этом конструкторе
Person::Person(int _id[9], string name, int age) :_age(age), _name(name){};
неявно преобразуется в указатель на первый элемент массива, переданного в качестве аргумента. То есть на самом деле конструктор выглядит
Person::Person(int *_id, string name, int age) :_age(age), _name(name){};
и указатель не хранит информацию указывает ли она к одному объекту или к первому объекту массива.
Таким образом, вы должны добавить этот параметр с еще одним параметром, который будет указывать размер массива подкласса, если таковой имеется в качестве аргумента.
Например
Person::Person(int *_id, size_t id_num, string name, int age)
:_id {}, _age(age), _name(name)
{
size_t size = id_num < 9 ? id_num : 9;
std::copy(_id, _id + size, this->_id);
}
связанные/дубликата: [? Как передать массив в конструктор] (http://stackoverflow.com/questions/9426932/how-do-i-pass-an -array-to-a-constructor) – NathanOliver
использовать 'std :: vector' или 'std :: array ' –
Casey