Lenguajes distintos implica metodologías distintas de programación. En C++ no se pueden mezclar tipos en un vector porque se necesita saber el tamaño de cada elemento.
No es ninguna limitación puesto que ya conoces el tipo de los datos antes de compilar. Simplemente creas un array de cada elemento en la clase y santas pascuas:
Código C++:
Ver originalProfesor Profesores[10]; // Array de 10 elementos
Alumno Alumnos[10]; // Array de 10 elementos
Es mucho más eficiente y ocupa menos memoria que lo que planteas (JavaScript no hace magia, tiene un montón de funciones y datos internos para permitirte usar esos operadores... C++ solo guarda un puntero al primer elemento para poder localizarlo).
Además te evitas hacer esas comparaciones cada vez que quieras usar un elemento, simplemente tiras de su array correspondiente (o del vector en caso de que quieras cambiar su tamaño en tiempo de ejecución).
¿Que es menos bonito? Como ya te he dicho, es una metodología de programación diferente.