C ++: herança múltipla com polimorfismo

(perdoe a pergunta noob com antecedência)

Eu tenho 4 aulas:

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

EssencialmentePerson é a classe base, diretamente subclassificada por ambosStudent eEmployee. StudentEmployee emprega herança múltipla para subclasse de ambosStudent eEmployee.

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}; 

Quando eu uso uma matriz dePerson, a classe base, eu posso colocarPerson e todas as suas subclasses dentro dessa matriz. Exceto porStudentEmployee, dada a razão da classe base ambígua.

Dado queStudentEmployee é garantido que todos os métodos e atributos dePerson, éStudentEmployee considerado uma subclasse de Pessoa?

Nesse caso, por que o compilador não me permite atribuir um objeto a uma variável do tipo de sua superclasse?Se não, por que não? e qual seria a maneira correta de fazer isso?

Felicidades

EDIT: Preemptively, esta pergunta não é o mesmo que um dos seguintes:
polimorfismo relaciona herança
Herança destruindo polimorfismo em C ++?

questionAnswers(2)

yourAnswerToTheQuestion