Ach, dir ist das wirklich mehr klar?
Alles schön und gut. Aber wenn ich ausserhalb dieser Klasse mir ein Rect von der Basisklasse hole, was absolut nichts mit der KLassendeklaratio zutun hat, was hat dieses Rect dann mit der Klasse, die erbt zutun?
Scheinbar nämlich nicht. Es hat rein gar nichts mit der Basisklasse zu tun und du kannst das Rect so behandeln, als sei es von der erbenden Klasse, also in der erbenden deklariert worden.
Abr schlichtweg denke ich, dass du schlicht Probleme hast, den Umstand zu beschreiben und so irgendwas schreibst, was nicht dem entspricht.
Wenn du eine Instanz deiner Basisklasse machst, dann hat diese Instanz natürlich nichts mit "Ufo" zu tun. Dazu müsstest du separat Instanzen oder eine Instanz von Ufo anlegen.
Beide Klassen sind voneinander zu trennen, Basisschiff ist eine Klasse und Ufo ist eine Klasse, die beide nichts miteinander zu tun haben, außer dass Ufo durch das Basisschiff an Schreibarbeit abspeckt.
Sehr salopp.
Behandle Ufo einfach wie eine normale Klasse... Mach Instanzen von und führe die Funktionen aus.
Durch die Vererbung kannst du alle erbenden Klassen jedoch noch in einen Container unter der Basisklasse packen. Also bspw. std::vector<Basisschiff> und so für alle äußerst bequem die Funktionen ausführen lassen.
.
Schwer das Ganze zu schreiben ohne potentielle Verwirrungen auszuschließen und trotzdem "alles" zu nennen. Aber zu viel ist ja auch zu viel.
MfG
Check