我必须在类里面学习内存管理,以及如何使用new运算符动态分配内存。

我有一个结构是

struct Course
{
    int courseNumber, creditHours;
    string courseName;
    char grade;
};

我试图用for循环填充成员变量,但是我不确定如何将getlinecourseName一起使用。我可以使用常规的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的返回值:)

09-12 06:16