Is it possible to make a vector of a subclass class?
For example, I have the super class University. And I Have the subclasses Student and Major. Major class has a vector of students.
I tried this code but it doesn't work. Any help?
class University {
public:
virtual void print(std::ostream& os) = 0;
virtual ~University() = default;
};
class Student : public University{
std::string studentName;
public:
Student(std::string studentName) : University(), studentName(studentName){}
void print(std::ostream& os) override {
os << this->studentName << std::endl;
}
};
class Major : public University{
std::vector<Student> students;
public:
Major(std::vector<Student> students) : University(), students(students){}
void print(std::ostream& os) override {
for(size_t i = 0; i < this->students.size(); ++i){
os << this->students[i] <<std::endl;
}
}
};
int main(){
Student student1("Mark");
Student student2{"Tom"};
Student student3{"Donald"};
Student student4{"Duck"};
std::vector<Student> students {student1, student2, student3, student4};
Major major{students};
folder.print(std::cout);
}