Мое задание по программированию требует, чтобы я определил структуру Student с именем вектора и структуру Course с именем и вектором, содержащую зарегистрированных студентов и следующие функции:
void print_student(Student* s)
void print_course(Course* c)
void enroll(Student* s, Course* c)
//enrolls given student in the given course and updates both vectors
Я попытался добавить амперсанды в параметрах функции регистрации, чтобы исправить это, но это не сработало.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Student
{
string Name ;
vector < Course* > Courses;
};
struct Course
{
string Name ;
vector < Student* > Students;
};
void print_Student(Student* s)
{
cout << s->Name << endl;
for (int i = 0; i < s->Courses.size(); i++)
{
cout << s->Courses[i] << endl;
}
};
void print_course(Course* c)
{
cout << c->Name << endl;
for (int i = 0; i < c->Students.size(); i++)
{
cout << c->Students[i] << endl;
}
};
void enroll(Student* &s, Course* &c)
{
cout << "Enrolled " << s << "in " << c << endl;
s->Courses.push_back( c );
c->Students.push_back( s);
}
int main()
{
Student* Bob;
Course* ComputerScience;
Bob->Name = "Bob";
ComputerScience->Name = "Computer Science";
enroll( Bob , ComputerScience);
system("Pause");
}
Я ожидал, что код зачислит студента Боба на курс информатики, чтобы позже я смог определить больше студентов и распечатать их.
Код кажется хорошим, но при запуске компилятор выдает мне следующие ошибки:
source.cpp(10): error C2065: 'Course': undeclared identifier
source.cpp(10): error C2059: syntax error: '>'
source.cpp(10): error C2976: 'std::vector': too few template arguments
source.cpp(41): error C2663: 'std::vector<_Ty,_Alloc>::push_back': 2 overloads have no legal conversion for 'this' pointer
Я не понимаю, что происходит, и как я могу это исправить?