Anfängerproblem
-
Hi!
Ich hab ein etwas komisches Problem:
Ich hab, sagen wir eine Klasse A, eine Klasse B und eine Klasse C.
Sagen wir ich erzeuge jetzt in B ein Objekt von A.
Nun, wenn ich jetzt in C ebenfalls ein Objekt von A erzeuge habe ich zwei verschiedene Objekte von A in B und C.
Ich möchte jetzt aber auf die selben Daten von A in B und C zugreifen.
Also mein Problem: ich müsste in B und C das selbe Objekt A haben.
Wie mache ich das??
Ich hoffe das ist verständlich formuliert, ich fand in der Schnelle keine bessere Erklärung.
Ich wäre um jeden Tipp dankbar!!
Vielen Dank schon mal!
-
nightrider schrieb:
Also mein Problem: ich müsste in B und C das selbe Objekt A haben.
Wie mache ich das??
Da du dies nicht geschrieben hast, gehe ich einfach mal davon aus, dass es zwischen A, B und C keinerlei hierarchische Beziehungen gibt.
Ich würde das A Objekt in B und C evtl. referenzieren, also direkt mit Referenz oder mit Zeiger. Das A Objekt selbst müsste dann irgendwo anders existieren. Da mir dieses Szenario allerdings einiges an Bauchschmerzen bereitet, würde ich vermutlich nach einer anderen Lösung als die von dir vorgegebene suchen.
Vielleicht wäre aber auch Spiegelung etwas für dich. Dh, du hast sowohl in B als auch in C jeweils ein A Objekt. Wenn sich B.A ändert, dann passt du C.A an und wenn sich C.A andert, dann passt du B.A an.
-
je nach sinn deines programms wäre vielleicht auch ein Singleton was für dich.
ein singleton ist eine klasse von der programmweit nur EIN objekt erzeugt werden kann. einfach mal "Singleton" suchen mit google oder hier mit der suchfunktion..
-
Danke für eure schnellen Antworten, das klingt alles schon sehr gut!
Aber ist mein Problem wirklich so selten?? Habt ihr dieses Problem noch nie gehabt?? Es kommt doch schließlich öfters vor, dass zwei verschiedene Klassen von einer andere Klasse (ohne hierarchische Verbindung) etwas bruchen.
Wie kommt es, dass ihr noch nie auf das Problem gestoßen seid?
-
Warum denn so kompliziert?
Ich würde einfach zuerst eine Instanz von A erstellen, und dann einen Pointer auf diese Instanz als Parameter bei den Konstruktoren von B und C übergeben, welcher den Pointer dann in einer Member-Variable speichert.
[cpp] //main-Teil: A* pA = new A; B BObjekt(pA); C CObjekt(pA);[/cpp][cpp]//Klasse B (Dasselbe bei C): class B { public: A* m_pA; B(A* pA) { m_pA = pA; } ... }[/cpp]Somit kannst du über m_pA jederzeit auf die Instanz von A zugreifen, und zwar von beiden Klassen aus auf dieselbe.
Gruß
BrainiacEDIT: Ja ich bin schön öfters auf das Problem gestoßen
Und habs meistens so gelöst. Dafür sind Zeiger ja schließlich da! 
-
Brainiac schrieb:
Warum denn so kompliziert?
Ich würde einfach zuerst eine Instanz von A erstellen, und dann einen Pointer auf diese Instanz als Parameter bei den Konstruktoren von B und C übergeben, welcher den Pointer dann in einer Member-Variable speichert.
Sehr schön, du hast genau das wiederholt, was ich bereits geschrieben habe. Nur mit anderen Worten.

nightrider schrieb:
Aber ist mein Problem wirklich so selten?? Habt ihr dieses Problem noch nie gehabt??
Vielleicht liegt das einfach an deiner Formulierung.
nightrider schrieb:
Sagen wir ich erzeuge jetzt in B ein Objekt von A.
Nun, wenn ich jetzt in C ebenfalls ein Objekt von A erzeuge habe ich zwei verschiedene Objekte von A in B und C.
Ich möchte jetzt aber auf die selben Daten von A in B und C zugreifen.
Hättest du geschrieben
Ich habe zwei Klassen B und C, in denen ich jeweils Zugriff auf ein und dasselbe Objekt vom Typ A brauche.
dann würde ich sagen, so selten ist das Problem wahrscheinlich nicht. Auch wenn mir spontan kein entsprechend sinnvolles Szenario einfällt.
-
Vielen Dank, das hat mir alles sehr viel geholfen!!!!

Euer Engagement ist immer wieder klasse!