Problem mit Zeiger und =
lima-city → Forum → Programmiersprachen → C/C++ und D
beschreibung
entsprechenden code
folgendes problem
instanz
jeweilige attribut
message
objekt
operator
posten
problemanalyse
profil
sachverhalt
saubere herangehensweise
scheibe
speicherplatz
spiel
spieler
statistik
vorgegebenen methode
zeiger
-
Also ich hab folgendes Problem mit einem Spiel:
Ich habe eine Klasse GameProfil in der werden die Profile der Spieler gespeichert (für Statistiken und so) Abgespeichert sind alle Profile in einem Array in der Klasse GameDocument.
Wenn man ein Spiel startet wird eine Instanz von ShogiWindow aufgerufen. Diese verwaltet die Darstellung. Dann hat dieses ShogiWindow ein ShogiDocument. In dieser Klasse werden alle Daten zum Spiel gespeichert und dort sind auch zwei Zeiger vom Typ GameProfil (hab ich in ShogiDocument.h drin), für die beiden Spieler die gegeneinander spielen. Allerdings wird bei dem anklicken der Schaltfläche für "Neues Spiel" die Funktion New() des ShogiWindows ein Dialogfeld, mit zwei Comboboxen in denen alle Profile sind, aufgerufen. In dem Konstruktor des Dialogfelds (Klasse NewGameDialog) werden die beiden Zeiger übergeben. Wenn man jetzt die Profil wählt und auf Ok klickt sollen zwei neue Instanzen von GameProfil erzeugt werden und den Zeigern übergeben werden. Allerdings läuft das nicht im Konstruktor ab, sondern in einer von einer Schnittstelle vorgegebenen Methode Message( Message Mesg ).
Deshalb habe ich in der Klasse NewGameDialog nochmal zwei Zeiger. Im Kionstruktor wird dann Zeiger1 = ZeigerzuGameProfil; aufgerufen. Dann wird, wenn der OK Button geklickt wird dem Zeiger1 das neue Objekt übergeben und ich dachte nun, dass dieses in dem Speicherplatz von ZeigerzuGameProfil gespeichert wird. Beim scheiben dieses Themas aber fällt mir auf, das der Zeiger dann ja auf den Speicherplatz des neuen Objektes zeigt.
Trotzdem bleibt die Frage: wie kann ich ereichen, dass der Zeiger der Klasse ShogiDocument auf das neue in NewGameDialog erzeugte Objekt zeigt? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo reimann,
deine ausführliche Beschreibung ist zwar schön und gut, aber für eine Problemanalyse wäre es wesentlich leichter, wenn du auch noch den entsprechenden Code posten könntest, da man so viel besser den Sachverhalt überblicken kann. -
bladehunter schrieb:
Hallo reimann,
deine ausführliche Beschreibung ist zwar schön und gut, aber für eine Problemanalyse wäre es wesentlich leichter, wenn du auch noch den entsprechenden Code posten könntest, da man so viel besser den Sachverhalt überblicken kann.
Das hab ich nicht, weil ziemlich viel von dem Quellcode unwichtig sit und ich nicht wusste, ob ihr mit den anderen Klassen klarkommt, die nur der Taschenrechner besitzt. Naja ich hab das Problem auf jedenfall gelöst, indem ich einfach einen Zeiger auf das jeweilige Objekt, statt auf das jeweilige Attribut der Objekte in dem Konstruktor des Windows mitgegeben habe und dann durch das Objekt direkt das Attribut verändern konnte.
Wieso hab ich dafür nur solange gebraucht?
Beitrag zuletzt geändert: 9.5.2009 14:36:30 von reimann -
Die saubere Herangehensweise wäre für die Klasse, die umkopiert werden soll, einen entsprechenden Assignment-Operator zu schreiben, sprich MyClass::operator= zu überladen. Falls du schon einen Copy-Konstruktor definiert hast, reicht es dann diesen im Assignment-Operator aufzurufen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage