我是 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/