Bonjour,
Je bloque un peu sur un code qui me semble pourtant assez simple. J’ai la classe suivante :
class Company
{
public:
void add_employee(Employee &&employee) // La définition n'est pas là, c'est juste pour simplifier
{
employees_.push_back(std::make_unique<Employee>(std::move(employee)));
}
private:
std::vector<std::unique_ptr<Employee>> employees_;
};
Et la classe Employee
suivante :
class Employee
{
public:
Employee(double salary=1200);
virtual ~Employee();
virtual double compute_salary() const;
virtual void display() const;
protected:
double salary_;
};
Et j’ai 6 classes qui héritent de Employee
. Mon but est de pouvoir avoir dans mon vecteur Company::employees_
toute sorte d’employé dont des classes filles.
Le problème est que dans la méthode suivante par exemple :
void Company::display_employee_salary() const
{
for (auto &&employee : employees_) {
std::cout << employee->get_firstname() << " " << employee->get_lastname() << ": ";
std::cout << employee->compute_salary() << " €\n";
}
}
La méthode compute_salary
appelée est celle de la classe employé et non celle d’une des classes filles. Est-ce que c’est parce que j’utilise un pointeur unique_ptr
?
Merci pour votre aide
+0
-0