[英]invalid user-defined conversion error
我正在創建一個簡單的程序來存儲參加某個教室的孩子,每個孩子都有一個定義他們朋友的數組。
我正在經歷
錯誤:從“Kids*”到“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&&,而我正在創建節點的新實例,例如動態分配它從而將其作為 Kids* 傳遞?
感謝幫助!
new Kids(i)
創建一個由i
初始化的Kids
對象並返回指向它的指針。
kids[i]
是Kids
對象(左值),而不是指針。
這些類型根本不兼容。
kids
數組已由第一條指令( kids = new Kids[ size ];
)分配,無需再次分配。
如果你想用它的索引初始化每個孩子,你應該能夠輸入:
kids[i] = Kids(i);
但是你似乎打破了規則three/fize/zero ,所以YMMV。
順便說一句,與其自己做所有艱苦的工作,不如讓圖書館為您做,並使用集合/智能指針,而不是手動管理您的資源。 使用std::vector<Kids>
或std::unique_ptr<Kids[]>
,以適合您的需求為准。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.