Я создаю простую программу, в которой хранятся дети, которые посещают определенную классную комнату, каждый ребенок имеет массив, который определяет их друзей.Неверная пользовательская ошибка преобразования
Я испытываю
error: invalid user-defined conversion from 'Kids*' to 'Kids&&' [-fpermissive]|
ошибку. Я использую этот код
struct Kids{
int *friends;
Kids(){};
Kids(int n){
friends = new int[n];
}
};
class Classroom{
Classroom(){
cin >> size;
kids = new Kids[ size ];
for(int i = 0; i < size ; i++){
kids[i] = new Kids(i);
}
}
private:
int size;
Kids *kids;
};
Почему эта линия
kids[i] = new Kids[i];
рассматривает компилятор как попытку преобразовать Kids * для детей & & в то время как я создаю новый экземпляр узел, например, динамически выделяющий его таким образом передавая его как Дети *?
Спасибо за помощь!
'kids [i]' типа 'Kids'. 'new Kids [i]' имеет тип 'Kids *' (массив 'Kids'). Я думаю, вы имеете в виду 'new Kids (i)', и в этом случае результат будет иметь тип 'Kids'. – Qix
@Qix 'new' всегда возвращает тип указателя (или бросает). – krzaq
'std :: vector kids;' и 'std :: vector friends;' - это избавляется от члена 'size' и не требует управления ручным управлением памятью. –
PaulMcKenzie