簡體   English   中英

無效的用戶定義轉換錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM