J
Pellaeon schrieb:
Mit dem parent bist du auf alle Fälle auf eine Struktur festgenagelt.
Wenn du z.B. sagst "ProjectWindow" kann mein Projekt anzeigen und du hangelst dich durch, ist diese Klasse darauf angewiesen, dass sie sich durchhangeln kann, ist also auf diesen Kontext festgenagelt. Wenn man ihr aber nen Zeiger füttert und sagt: "hier hast du ein Projekt, jetzt sieh zu das du es anzeigst", dann ist die nicht so sehr daran gebunden, wo das Objekt herkommt.
Hm. Ja. Das sehe ich ein. Ich habe das Gefühl, das ist die flexiblere Lösung. Allerdings bin ich mir sehr unsicher, was passiert, wenn meine Anwednung wachsen wird (und das wird sie definitiv!). Ich kann schwer abschätzen ob ich am Ende nicht gigantische Konstruktoren habe, die alle möglich zeiger oder Referenzen gefüttert bekommen.
Ich bin hin und her gerissen zwischen einem direkten Parent und dem übergeben einzelner Zeiger. Wie du sagst, ist das eine sehr einfach aber unflexibel und das andere aufwändig aber modularer. Hier wäre eine Regel schön, anhand derer man sich diese Entscheidung erleichtern kann.
Pellaeon schrieb:
Dafür muss man hier natürlich aufpassen, wenn das Objekt gelöscht wird, das du in jedem Fenster aus dem Zeiger ne NULL-Nummer machst ...
Wenn ich nicht Zeiger übergebe, sondern Referenzen auf Zeiger, dann erledigt sich das!?
Ich hab einzwischen auch über das Singleton Muster nachgedacht. Auch hier bin ich hin und her gerissen. Wenn ich dem Application-Object z.B. den Namen meiner Anwendung mitgebe, den ich an allen Ecken und Enden benötige, dann ist solch ein einzigartiges, global verfügbares Objekt natürlich schön. Wenn ich bisher auch noch keine richtig gute Singleton-Lösung für dynamische Singleton-Objekte (und vor allem deren Destruktion!) gesehen habe. Auch geht es mir gegen den Strich, eine Klasse zu schreiben, die am Ende (selbst wenn man es garnicht will) zur "Einzigartigkeit" verdonnert ist. Viel lieber wäre es mir, wenn ich die Application-Klasse ohne Veränderung sowohl Singleton als auch nicht-Singleton erzeugen könnte. Aber im Augenblick habe ich hierfür keine vernünftige Idee... naja, man könnte natürlich eine einfache, globale Funktion erzeugen, die einen statischen Zeiger zurück liefert, den man manuell initalisiert (bei der Erzeugung des Applikation Objekts) und wieder löscht (bei der Destruktion des Application Objekts). So primitiv das ist, so effektiv erscheint es mir in diesem speziellen Fall (so viele Application objekte erzeugt man ja nicht jeden Tag, das man das nicht per Hand erledigen könnte).