Konstruktor - Parameter später übergeben?
-
out schrieb:
A::A() : bobj(i,c) {}i und c müssen noch irgendwoher kommen. Zum Beispiel:
A::A(int i, char c) : bobj(i,c) {}@Threadersteller: Wie kann ein A ein unvollständiges B haben? Dann wäre A auch nicht vollständig. Also ist entweder ein B kein Teil von A (und es ist falsch, das B als Member von A zu haben) oder die Initialisierung von A ist unvollständig (outs und mein Code gehen dieses Problem an).
-
.
-
Sone schrieb:
So stell ich mir vor was du willst,
Glaubst du wirklich, dass er das will?
-
SeppJ schrieb:
Sone schrieb:
So stell ich mir vor was du willst,
Glaubst du wirklich, dass er das will?Natürlich nicht. Aber sein Design ist einfach so verdammt komisch, ich meine, hä? Wie, wann will er bobj erzeugen?
-
Wie, wann will er bobj erzeugen?
Sobald ein Objekt von A erzeugt wird, soll auch eins von B erzeugt werden, sodass Methoden von A mit dem Objekt arbeiten können. Dass das Beispiel dort oben nicht funktionieren wird, ist mir bewusst. War ja auch nur dazu da um das ganze zu verdeutlichen.
-
Wenn du so etwas hast, dann nimmst du B als Pointer in A und initialisiert diesen auf 0 (im Konstruktor). Sobald die beiden nötigen Variablen gesetzt sind (und der Pointer immernoch 0 ist) erstellt du B. Und alle anderen Funktionen die B benutzen sollen müssen vorher abfragen ob B schon erstellt wurde und ansonsten eine vernünftige Fehlerbehandlung durchführen.
-
Fellhuhn schrieb:
Wenn du so etwas hast, dann nimmst du B als Pointer in A und initialisiert diesen auf 0 (im Konstruktor). Sobald die beiden nötigen Variablen gesetzt sind (und der Pointer immernoch 0 ist) erstellt du B. Und alle anderen Funktionen die B benutzen sollen müssen vorher abfragen ob B schon erstellt wurde und ansonsten eine vernünftige Fehlerbehandlung durchführen.
Das war praktisch was ich meinte! Mit Smart-Pointer.
-
Vielen Dank an alle für Hilfe. Habe es nun verstanden.

-
Sone schrieb:
Fellhuhn schrieb:
Wenn du so etwas hast, dann nimmst du B als Pointer in A und initialisiert diesen auf 0 (im Konstruktor). Sobald die beiden nötigen Variablen gesetzt sind (und der Pointer immernoch 0 ist) erstellt du B. Und alle anderen Funktionen die B benutzen sollen müssen vorher abfragen ob B schon erstellt wurde und ansonsten eine vernünftige Fehlerbehandlung durchführen.
Das war praktisch was ich meinte! Mit Smart-Pointer.
Bei solchen merkwürdigen Anfragen gehe ich davon aus das der Compiler zu alt für unique_ptr ist.
-
Fellhuhn schrieb:
Sone schrieb:
Fellhuhn schrieb:
Wenn du so etwas hast, dann nimmst du B als Pointer in A und initialisiert diesen auf 0 (im Konstruktor). Sobald die beiden nötigen Variablen gesetzt sind (und der Pointer immernoch 0 ist) erstellt du B. Und alle anderen Funktionen die B benutzen sollen müssen vorher abfragen ob B schon erstellt wurde und ansonsten eine vernünftige Fehlerbehandlung durchführen.
Das war praktisch was ich meinte! Mit Smart-Pointer.
Bei solchen merkwürdigen Anfragen gehe ich davon aus das der Compiler zu alt für unique_ptr ist.
Noch nicht mal Templates/Boost?
-
Gibt Leute die müssen auf der Arbeit immer noch mit "C-typischen" "C++" leben... Templates? Schön wäre es.

-
Fellhuhn schrieb:
Gibt Leute die müssen auf der Arbeit immer noch mit "C-typischen" "C++" leben... Templates? Schön wäre es.

Du armer, armer... gibt es etwas, das man für dich tun kann? Irgendwas?
-
Bier.
