E
Hm, aber wenn ich einen Teilbaum in einen anderen Baum move, dann werden die Kinder eben an den Parent angeknüpft. Genau so wie, wenn ich bei einem echten Waldbaum einen Ast mit Zweigen abreiße und an einen anderen Baum dranklebe (also z.B. einen herauswachsenden Ast durch meinen gemoveten Teilbaum ersetze). Wieso ergibt das keinen Sinn? Man muss halt stets den Parent nachkorrigieren, aber jeder Ast hat über seine Kinder doch das Besitzrecht. Aber vielleicht versteh ich den Einwand nicht ausreichend. Die Untermengen müssen natürlich gemäß der Obermenge nachkorrigiert/reduziert werden.
Stellt man sich das grafisch dar, kann es doch stets Sinn machen, Teilbäume irgendwo anders reinzumoven (über Drag&Drop). Intern muss halt erst ein neuer Teilbaum angelegt werden, in den kann dann der andere Teilbaum gemoved werden. Oder findet ihr das Quatsch?
Und die Anwendung einer Teilbaumkopie habe ich bei mir ebenso.
Okay, dann geht die obige Syntax:
Menge menge;
menge.setzeZahl(10);
menge.setzeZahl(20);
Menge& untermenge = menge.erzeugeKind();
untermenge.setzeZahl(15); // führt zu nichts
untermenge.setzeZahl(10); // gut
aber natürlich nicht. Wie würdet ihr das denn dann nennen und wie würdet ihr die Schnittstellen basteln, um das umzusetzen?
So oder anders?
MengenBaum baum;
baum.wurzel().setzeZahl(10);
Menge& untermenge = baum.wurzel().erzeugeKind();
untermenge.setzeZahl(10);
// Kopie
Menge untermengenKopie = untermenge;
// Move
MengenBaum andererBaum = std::move(baum);
Ich fand es nur wie gesagt praktisch, dass ich irgendjemandem eine Menge gebe und die Menge ihre Untermengen dann einfach hat und ich nicht noch eine Baumstruktur drumlegen muss. Findet ihr das nicht praktisch? Oder doch, aber das muss ich dann leider in Kauf nehmen?
Edit: Hm, und diesen Baum zu serialisieren macht wirklich überhaupt keinen Spaß. Ein index-basierter Ansatz für Kenntnis des Parent und der Neighbors hat mittlerweile so viele Vorteile... man hat halt ne Indirektion mehr, aber die Performance ist hier eigentlich egal. Nur wenn man einem Teilbaum sagt "füge Mal was ein", muss der eben den Parent kriegen, also müsste man ihm den Parent mit übergeben, das ist ja auch Käse.