C ++: Mehrfachvererbung mit Polymorphismus

(entschuldigen Sie die noob Frage im Voraus)

Ich habe 4 Klassen:

class Person {};
class Student : public Person {};
class Employee : public Person {};
class StudentEmployee : public Student, public Employee {};

Im WesentlichenPerson ist die Basisklasse, die von beiden direkt untergeordnet wirdStudent undEmployee. StudentEmployee verwendet Mehrfachvererbung, um beide @ -Klassen zu unterteileStudent undEmployee.

Person pat = Person("Pat");
Student sam = Student("Sam");
Employee em = Employee("Emily");
StudentEmployee sen = StudentEmployee("Sienna");


Person ppl[3] = {pat, sam, em};
//compile time error: ambiguous base class
//Person ppl[4] = {pat, sam, em, sen}; 

Wenn ich ein Array von @ benutPerson, die Basisklasse, kann ich @ setzPerson und alle seine Unterklassen innerhalb dieses Arrays. Ausser fürStudentEmployee, aufgrund der mehrdeutigen Basisklasse.

Gegeben, dassStudentEmployee hat garantiert alle Methoden und Attribute vonPerson, istStudentEmployee als Unterklasse von Person?

Wenn ja, warum erlaubt mir der Compiler nicht, einer Variablen vom Typ seiner Oberklasse ein Objekt zuzuweisen?Wenn nicht, warum nicht? und was wäre der richtige Weg, um dies zu erreichen?

Pros

EDIT: Diese Frage ist präventiv NICHT mit einer der folgenden Fragen identisch:
polymorphismus bezieht sich auf Vererbung
Vererbung, die Polymorphismus in C ++ durcheinander bringt?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage