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