class course{
public:
course();
void printCourse();
~course();
private:
string title;
};
Здесь вы определили printCourse
как нестатический c -метод курса класса.
Но там, где возникает ошибка: course::printCourse()
вы пытаетесь выполнить статистику c метод класса Курс. Если вы не знаете, о чем я здесь говорю, это краткое резюме (но я рекомендую прочитать о различиях между методами stati c и non stati c):
A stati c Метод работает без экземпляра класса. Это обычно используется в синглетах, которые по замыслу «всего один объект». Это может быть, например, глобальный ID-счетчик для студентов:
class StudentIdManager
{
static int num_students = 0;
public:
static int getNextStudentId()
{
return num_students++;
}
}
Теперь вы можете получить следующий уникальный идентификатор для студента, вызвав StudentIdManager::getNextStudentId()
без фактического объекта. Вы можете назвать это «функцией класса». Не «объектная функция».
Класс stati c явно не подходит для вашего курса, поэтому имеет смысл реализовать его так же, как вы.
Однако у вас есть позвонить на фактический объект. Сложность состоит в том, чтобы найти каждый объект в динамически распределенном массиве, но у вас должна быть вся необходимая информация. В конце это выглядело бы примерно так:
void student::printRecord()
{
cout << endl << name << endl;
for (size_t i = 0u; i < numCourses; i++)
{
// here you're now calling the method printCourse on an actual course as intended instead of a static class
stuCourses[i]->printCourse();
}
}
Однако я также нахожу странным, что вы должны это реализовать. Простой std::array<course, numCorses>
для фиксированного числа курсов или std::vector<course>
для переменного числа курсов сделает код более читабельным, безопасным и расширяемым.
То, что вы здесь делаете, это хорошая задача для C привыкнуть к архитектуре фон Неймана.
Но не для C ++. Это не тоже самое. К сожалению, для большинства учителей C ++ - это «C с классами», что неправильно на многих уровнях. Все функции, добавленные в C ++, позволяют вам не писать код так, как хочет ваш учитель.