У меня есть метод как в базовом классе, так и в производном классе.Когда я вызываю этот метод для объекта в производном классе, он вызывает метод базового класса, а не метод производного класса.Вот мой код:
Person.h
class Person
{
...
public:
...
virtual void coutPerson();
};
Person.cpp
void Person::coutPerson() {
cout << name << endl;
birthday.coutDate();
phoneNumber.coutPhoneNumber();
cout << city << ", " << state << endl;
}
Student.h
class Student : public Person
{
...
public:
...
virtual void coutPerson();
};
Student.cpp
void Student::coutPerson() {
cout << "DEBUG: Student::coutPerson()" << endl;
//Person::coutPerson();
cout << "Dorm Room: " << this->dorm << " " << this->dormRoom << endl;
}
Объект, созданный в: addPerson<Student>(personVector);
Когда объект создается, он создается как Студент, потому что он вызывает студента-конструктора.Метод вызывается по адресу: personVector[num-1].coutPerson();
Объект Student - это объект, который сообщается coutPerson, поскольку он отображает информацию, которую я дал ему при создании объекта Student.
template<typename T> void addPerson(vector<Person> &personVector) {
T p;
personVector.push_back(p);
}
Когда метод coutPerson ()вызывается для объекта Student, он содержит только имя, день рождения, phoneNumber, город и штат.Что не так с этим кодом?Стоит позвонить Студенческому Методу ...
Спасибо!