C++ Klassen-Problem
-
Schreib gerade an meiner KI für das allseits beliebte Spiel 4 Gewinnt. Dabei bin ich auf ein Problem mit dem Klassen-System von C++ gestoßen.
Ich habe eine Klasse Feld, in der ist die Funktion void ZeichneFeld() deklariert und implementiert.
In der main()-Funktion wird ein Objekt der Klasse Feld erzeugt. Jetzt hätte ich dieses Objekt mittels eines Pointers an die Funktion SinglePlayer(Feld * singlefeld) weitergegeben und dort weiterverarbeitet. Geht aber net. Ich krieg nen Compilerfehler, wenn ich singlefeld.ZeichneFeld() innerhalb von SinglePlayer aufrufe.Liegt das allgemein daran, dass sich eigene Klassen net per Pointer übergeben lassen oder hab ich nen groben Fehler im Code, den ihr, soweit ich alles beschreiben kann erkennen könnt?
-
es liegt daran, dass der . Operator für Klassen definiert ist, und nicht für Pointer. Um also an das von einem Pointer referenzierte Objekt zu kommen, müssen wir den * Operator anwenden:
singlefeld ist ein Pointer auf ein Feld-Objekt
dann ist *singlefeld ein Feld-Objekt, auf das sich der Operator . anwenden läßt:(*singlefeld).ZeichneFeld() (Die Klammern müssen sein, weil . stärker bindet als
Es gibt auch eine Abkürzung dafür:
singlefeld->ZeichneFeld()
-
thx
hätt ich mir selber denken könnenPS: das board is geil!!!
-
was spricht dagegen, statt eines pointers eine reference zu übergeben?
SinglePlayer(Feld& singlefeld) { ... }
dann musst du nicht mehr dereferenzieren