Ich greif bis jetzt so auf einzelne Elemente zu:

"unit.current->data.set_selection(false)"

Also schon recht viel Schreibarbeit und es sollte nicht mehr werden.
Data ist in diesem Fall eines der drei objecte teil1, teil2 oder teil3.

Und dieses Listenelement wird bereits dynamisch angelegt und beinhaltet dann das Object data, weshalb ich das nur ungern auch wieder dynamisch zuweisen würde. Dann hätt ich da doppelte Speicherverwaltung zu berücksichtigen. Denn der pointer current zeigt bereits auf ein dynamisch erstelltes Object des Typs listenelement.

Es sollte also möglichst kein Pointer auf Speicher sein sondern tatsächlich die Byte für dasjeweilige Object beinhalten.

Zitat Zitat
union {
object1 teil1;
object2 teil2;
object3 teil3;
} alleTeile;

// Ich weiß nicht obs wirklich geht und ob unions nicht nur mit Primitiven gehen.
// Zugriff geht (theoretisch) über

alleTeile.attribut;

// Wobei ich gerade daran Zweifel, dass das wirklich geht. Denn der Compiler muss ja den Typ des Objekts wissen um das Attribut zu bekommen. Mmh. Vielleicht auch..

((object2)alleTeile).attributVonObject2;
Und was meine gestrigen Tests mit den Unions anbelangt, sieht der Zugriff so aus:
alleTeile.teil1.attribut;
oder
alleTeile.teil2.attribut;
oder
alleTeile.teil3.attribut;

Das ist auch genau mein Problem. Denn die Benutzung der drei Teile soll so dynamisch erfolgen, dass ich nicht genau vorher weiß, welches der drei objecte benutzt werden soll. Also stört es nur, dass ich vorher genau den namen des Objects mit angeben muss.
Eine Ansprache wie "alleTeile.attribut;" wäre viel einfacher.
Und wenn ich das umgehen will, indem ich einen Pointer auf teil1, teil2 oder teil3 richte und dann im Aufruf nutze, sieht das zwar so aus:
alleTeile.pointer->attribut;
und im ersten Moment ist das Problem damit gelöst, ein Name zum Aufrufen des entsprechenden Elements im darauf gezeigten Object, allerdings bekomm ich da Probleme mit dem Typ des Pointers. Denn ich muss diesem Pointer ja einen Typ geben, entweder object1, object2 oder object3. Und dementsprechend kann er dann nur auf dieses Object zeigen. Daher auch die Frage, ob sich der Pointer irgendwie dynamisch nach dem Typ anpassen kann, auf den er zeigt.

Wenn sich das nicht machen lässt, müsste ich eventuell in einen extra variablen eine Zahl für den Typen vereinbaren und dann per if die Zahl auswerten und manuell in den Typ casten, auf den gezeigt wird, teil1, teil2 oder teil3. Aber sowas möcht ich ja, wenn möglich, vermeiden und möglichst dynamisch bleiben.