我必须学习类中的内存管理以及如何使用new
运算符动态分配内存。
我有一个结构
struct Course
{
int courseNumber, creditHours;
string courseName;
char grade;
};
我正在尝试使用for循环填充成员变量,但我不确定如何将getline
与courseName
一起使用。我能够使用常规cin
,但如果类名有空格则无法工作。
以下是我的代码和我尝试过的内容,但是我得到了一个争论错误,即courseArray未定义。
Course* readCourseArray(int &courses) //Read Courses
{
cout<<"\nHow many courses is the student taking?\n";
cin>>courses;
const int *sizePTR = &courses;
Course *coursePTR = new Course[*sizePTR];
for(int count = 0; count < *sizePTR; count++) //Enter course information
{
cout<<"\nEnter student "<<count+1<<"'s course name\n";
getline(cin,courseArray[count].courseName);
cout<<"\nEnter student "<<count+1<<"'s course number\n";
cin>>coursePTR[count].courseNumber;
cout<<"\nEnter student "<<count+1<<"'s credit hours\n";
cin>>coursePTR[count].creditHours;
cout<<"\nEnter student "<<count+1<<"'s grade\n";
cin>>coursePTR[count].grade;
}
return coursePTR;
}
答案 0 :(得分:3)
指向数组的指针名为coursePTR
,而不是courseArray
。只需将名称courseArray
替换为coursePTR
。
对于这一行:
const int *sizePTR = &courses;
您不必这样做,您可以直接使用courses
(因此,请从您使用的地点*
删除所有sizePTR
,然后更改sizePTR
到courses
)。
此外,我希望您记得delete[]
readCourseArray
:)