c++ - 请求从 到非标量类型的转换

标签 c++

我是 C++ 编程的新手,但是我用 Java 做过一些编程,所以我对 OO 编程并不完全陌生。

我想做的是创建结构,然后是该结构的对象数组。我试图保持该数组始终排序(使用新手排序),所以我所做的是定义结构,然后创建该结构的数组 [50],并帮助该结构的变量。然后,我从用户那里获得了不同变量(姓名、姓氏、成绩等)的每个新条目,并将其放入辅助变量中。然后,当用户在 helper 变量中输入完所有数据后,我继续找出该对象应该放在数组中的什么位置。

这里是示例代码,我尽量保持简单。

struct student {
    //declaring variables that student should have
};

student students[50];
int numOfStud=0;

while (a=='y' && numofStud<50) { //a=='y' just means user wants to add more students
    student input= new student;
            //adding various data to student     
            //adding input into an array of students using variation of insertion sort algorithm
cout << "want to add more students?";
cin >> a;
}

当我尝试编译它时,我在 student input= new student 处收到错误。所以我现在有点困惑。

题外话:我还有一个问题,比如当您执行 students[0]=input; 时,我是在此处创建对象的另一个拷贝,还是只是在创建另一个指针 (就像在 java 中一样),因此 students[0] 和 input 将指向同一个对象?

谢谢大家的帮助!

最佳答案

成功调用 new T 会返回一个指向动态分配的 T 对象的指针,因此您正试图从一个实例化一个 student指向 student 的指针:

student input= new student;

你只需要

student input;

当你这样做的时候

students[0]=input;

您正在将 input 的值分配给位于 students[0] 中的 student 实例。所以 students[0]input 将是不同的对象。

关于c++ - 请求从 到非标量类型的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16444624/

相关文章:

c++ - 是否可以测试链接列表的销毁功能?

c++ - 通过 IADS 删除 Active Directory 中的对象

c++ - 为什么我的小部件不显示?

android - Qt Ministro错误

C++ - 线程执行失败

c++ - 简单的 C++ 输入文件和 if 语句

c++ - AES 在 Qt 的 StringSource 和 StringSink 函数中无法正常工作

c++ - 如何使用模板类作为参数?

c++ - 将现有值分配给智能指针?

c++ - 一个数字只出现一次?