无效的用户定义转换错误
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&&而我正在创建一个新的节点实例,例如动态分配它,从而传递它作为孩子*?
谢谢你的帮助!
new Kids(i)
创建一个由i
初始化的Kids
对象,并返回指向该对象的指针。
kids[i]
是Kids
对象(左值),不是指针。
这些类型根本不兼容。
kids
数组已经被第一条指令(kids = new Kids[ size ];
)分配了,没有必要再做一次。
如果你想用它的索引来初始化每一个子元素,你应该只需要输入:
kids[i] = Kids(i);
但是你似乎打破了3/fize/0的规则,所以YMMV。
顺便说一下,与其自己做所有的艰苦工作,不如让库为你做,并使用集合/智能指针,而不是手动管理资源。使用std::vector<Kids>
或std::unique_ptr<Kids[]>
,根据您的需要选择。
相关文章:
- C++使用params创建线程函数会导致转换错误
- 为什么g++在未执行的代码处标记强制转换错误
- 为什么C++在将浮点数转换为字符时没有显示缩小转换错误?
- 如何在构建对象堆栈时解决转换错误?
- 执行具有转换错误的过程
- 指向类成员函数的指针中存在类型转换错误
- 为什么我在这里收到C++没有已知的转换错误?
- 增加图形转换错误
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- 返回带有另一个类的数据成员的构造函数?遇到转换错误?
- 指针和双重转换错误,代码没有
- 自定义函数转换错误?
- 将 C 程序转换为具有大量字符* 和无符号字符转换错误的C++
- 如何在我使用过的Arduino库之一中固定构造函数中的转换错误
- 试图使用strCMP时的char转换错误
- 我在 TSP 的C++解决方案中遇到转换错误
- "double(*)(string, double, double)"尝试传递函数C++时"double"转换错误
- 此语法中的构造函数转换错误
- Opengl 精度转换错误编译错误 E0415
- 无效的转换错误和无效的类型