Обратите внимание на следующие три упрощенных файла:
student.h:
#ifndef STUDENT_H
#define STUDENT_H
#include "course.h"
class Student
{
private:
Course someCourse;
};
#endif
course.h:
#ifndef COURSE_H
#define COURSE_H
#include "student.h"
class Course
{
private:
Student someStudent;
};
#endif
и main.cpp:
#include "student.h"
int main();
Это не компилируется, что дает мне
ошибку C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'someStudent'
Это привело бы к гораздо большему количеству ошибок (даже для правильных частей кода) в более сложной программе. Я предполагаю, что дизайн неправильный: Студент
включает Курс
, а Курс
включает Студент
. С его помощью я хочу представить, что студент проходит несколько курсов, а в курсе есть несколько студентов (я использую векторы в полной программе, избегая их здесь для простоты). Есть какие-нибудь советы, как это возможно?
Заранее спасибо, Влад.
ОБНОВЛЕНИЕ:
Спасибо за быстрые ответы. Прямое объявление класса Student
в классе Course
(и удаление #include "student.h"
), похоже, помогает.
Извините, Я думал, что здесь это не имеет значения, но на самом деле я использую векторы константных указателей в каждом из них (поскольку студент не должен иметь возможность управлять курсом
и курсом
] не может управлять Студентом
), как:
vector<const Student* const> students; // in Course class