Klassen problem (Anfänger)
-
Ja also hier meine Klassen definition
class Spielfeld { private: char feld[2][2]; int zaehler; char spieler1[20]; char spieler2[20]; public: void Feld_zeichnen(char feld[2][2],char spieler1[20],char spieler2[20],int zaehler); // class constructor Spielfeld(); // class destructor ~Spielfeld(); };
Hier die funktion der klasse
// class constructor Spielfeld::Spielfeld() { } // class destructor Spielfeld::~Spielfeld() { } void Spielfeld::Feld_zeichnen(char feld[2][2],char spieler1[20],char spieler2[20],int zaehler) { system("cls"); for (int i=0;i<160;i++){cout <<"=";} for (int i=0;i<116;i++){cout <<" ";} cout << "Tic Tac Toe"; for (int i=0;i<116;i++){cout <<" ";} for (int i=0;i< 37;i++){cout <<" ";} cout <<"1 2 3\n"; for (int i=0;i< 38;i++){cout <<" ";} cout <<"A "<< feld[0][0]<<" "<<feld[0][1]<<" "<<feld[0][2]<<"\n" ; for (int i=0;i< 38;i++){cout <<" ";} cout << "B "<<feld[1][0]<<" "<<feld[1][1]<<" "<<feld[1][2]<<"\n" ; for (int i=0;i< 38;i++){cout <<" ";} cout << "C "<<feld[2][0]<<" "<<feld[2][1]<<" "<<feld[2][2]<<"\n" ; }
So jetzt möchte ich die function gerne aufraufen wie mache ich das genau?
habs einmal so probiertSpielfeld Spiel; /* objekt erzeugen */ Spiel.Feld_zeichnen(); /* und dann mit funktion benutzen
und so
Spielfeld.Feld_zeichnen();
Vorab , bin ein Anfänger!
Also wer sich nur über meinen (ganz bestimmt nich ganz sauberen Code )lustigmachen will,soll die tun aber der brauch nicht zu posten!Danke!Mein 2 problem ist das ich den sinn vom constructor und destructor verstehe wenn einer ne gute hilfe kennt oder mirs erklären kann, aber bitte nicht auf fachchinesisch!
Bin für jede Hilfe äusserst Dankbar!
Gruß Tobias
-
Der erste Aufruf war schon richtig. Nur fehlen die Parameter beim Aufruf.
Ein Konstruktor wird aufgerufen, wenn du ein Objekt erzeugst. Darin kannst du dann alle Sachen machen, die dein Objekt zum korrekten Ablauf benötigt, zum Beispiel Speicher mit new allozieren oder ggf. vorhandene Parameter für das Objekt überprüfen.
Ein Destruktor wird aufgerufen, wenn das Objekt zerstört wird. Wenn du im Konstruktor mit new gearbeitet hast, dann solltest du im Destruktor delete verwenden. Ansonsten kommen da noch die Sachen rein, die halt so bei der Zerstörung notwendig sind (kommt halt immer auf das Objekt an).
-
wie muss ich die parameter den korrekt übergeben also
bei mir hat de compiler immer gemekert!Gruß Tobias
-
char feld[2][2]; for (int i=0;i<3;i++) { for (int n=0;n<3;n++) { feld[i][n]='-'; } } char feld[2][2]; char sp1[20]; char sp2[20]; int zr; Spielfeld Spiel; Spiel.Feld_zeichnen(feld[2][2],sp1[20],sp2[20],zr);
will jetzt diese variabeln an die funktion Feld_Zeichnen über geben!
Also weiss nicht was ich falsch mach!
Hoffe jemand kann mir helfen!
Gruß Tobias
-
Lass beim Aufruf die eckigen Klammern weg.
Wär vielleicht mal angebracht für dich ein Buch für Anfänger in C++ zu kaufen. Wenn du die Programmierung mit C(++) schrittweise mit dem Buch lernst, lassen sich solche Fehler vermeiden.
-
so meint er:
char feld[2][2]; for (int i=0;i<3;i++) { for (int n=0;n<3;n++) { feld[i][n]='-'; } } // char feld[2][2]; du machst ja die bearbeitung der schleife sonst wieder weg!! char sp1[20]; char sp2[20]; int zr; Spielfeld Spiel; Spiel.Feld_zeichnen(feld,sp1,sp2,zr);
-
Ja danke !
Buch ist schon Bestellt!
Gruß tobias