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önnen

    PS: das board is geil!!!



  • was spricht dagegen, statt eines pointers eine reference zu übergeben?

    SinglePlayer(Feld& singlefeld) { ... }

    dann musst du nicht mehr dereferenzieren 🙂


Anmelden zum Antworten