我必须在类里面学习内存管理,以及如何使用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;
}
最佳答案
指向数组的指针称为coursePTR
,而不是courseArray
。只需将名称courseArray
替换为coursePTR
即可。
对于此行:
const int *sizePTR = &courses;
您不必这样做,您可以直接使用
courses
(因此,从您使用*
的位置删除所有sizePTR
,然后将sizePTR
更改为courses
)。我也希望您记得
delete[]
readCourseArray
的返回值:)