Kadaj Geschrieben 12. Juni 2012 Geschrieben 12. Juni 2012 Guten Abend, ich bin zurzeit dabei mir das C++ - Buch von A-Z durchzulesen und wollte bei Seite 200 erstmal n kleines Programm schreiben, damit ich grade die Spielerei mit Arrays, die an Funktionen übergeben werden mal gemacht habe. Ich bin eher die Fehlermeldungen im gcc gewohnt und weiß jetzt leider nicht was der g++ mir mitteilen möchte. Sicher sind es ganz dummer Fehler und ich möchte mich schonmal im voraus dafür entschuldigen, aber vielleicht hat einer von euch Lust mal drüberzuschaun, ist natürlich erst Arbeit von ein paar Minuten, mir kommt es auch viel mehr auf die Fehlermeldungen des Compilers an: #include <iostream> #include <cstring> using namespace std; struct g_array{char array[7][8]; void print_field(g_array field); struct g_array init(g_array field); void print_field( g_array field ) { for(int i=0;i<7;i++) { for(int j=0;j<7;j++) { cout << " | " << field.array[i][j]; } cout << " | " << endl; cout << " ----------------------" << endl; } } struct g_array init(g_array field) { for(int i=0;i<7;i++) { for(int j=0;j<8;j++) { field.array[i][j] = 0; } } cout << "Initialisierung des Spielfeldes abgeschlossen:\n"; print_field( field ); return field; struct g_array insert(g_array field, char stone[1], int line) { if(field.array[line][7] < 6) { /* Stein von oben reinwerfen, wenn noch nicht voll */ field.array[ line ][ 6 - field.array[line][7] ] = stone[0]; /* Menge der Steine in der Reihe hochzählen */ field.array[line][7]++; } else { cout << "Reihe " << line << " ist schon voll!" << endl; cout << "Bitte wählen Sie eine andere Reihe...\n"; } return field; } int main() { char *spieler_x, *spieler_o, puffer[24]; char stone_x[1],stone_o[1]; g_array field; field = init(field); cout << "Herzlich willkommen bei Vier gewinnt!\n"; cout << "Bitte geben Sie den Name für den Spieler mit den Stein x ein: "; if( !( cin.getline(spieler_x,24) ) ) { cerr << "Fehler bei der Eingabe!"; return(0); } cout << "Bitte geben Sie den Name für den Spieler mit den Stein o ein: "; if( !( cin.getline(spieler_o,24) ) ) { cerr << "Fehler bei der Eingabe!"; return 0; } return 0; } [/PHP] Das hier meldet der g++: [PHP] viergewinnt.cpp:11:6: error: ‘void g_array::print_field(g_array)’ cannot be overloaded viergewinnt.cpp:8:6: error: with ‘void g_array::print_field(g_array)’ viergewinnt.cpp:24:16: error: ‘g_array g_array::init(g_array)’ cannot be overloaded viergewinnt.cpp:9:16: error: with ‘g_array g_array::init(g_array)’ viergewinnt.cpp:79:1: error: expected ‘}’ at end of input viergewinnt.cpp: In member function ‘int g_array::main()’: viergewinnt.cpp: At global scope: viergewinnt.cpp:79:1: error: expected unqualified-id at end of input Am wenigsten verstehe ich die letzte Meldung, kann mich jemand aufklären was der von mir will? Gruß Zitieren
Aras Geschrieben 12. Juni 2012 Geschrieben 12. Juni 2012 Hab grad keine C++ IDE installiert aber: struct g_array{char array[7][8]; da fehlt das } Zitieren
Kadaj Geschrieben 12. Juni 2012 Autor Geschrieben 12. Juni 2012 (bearbeitet) Ohman, dann war der Titel ja schon richtig gewählt^^ ist mir wohl beim Kopieren an eine andere Stelle passiert. Schon sind alle Fehler weg, ich danke dir ! :-) Bearbeitet 12. Juni 2012 von Kadaj Zitieren
afo Geschrieben 12. Juni 2012 Geschrieben 12. Juni 2012 kadaj: Du kannst in vielen Fällen davon ausgehen, dass wenn ein Fehler in der letzten Zeile deines Programms gemeldet wird mit dem du nicht so viel anfangen kannst irgendwas mit deinen Klammern nicht stimmt. Zitieren
Klotzkopp Geschrieben 12. Juni 2012 Geschrieben 12. Juni 2012 ich bin zurzeit dabei mir das C++ - Buch von A-Z durchzulesenIch hab schon einiges von diesem Buch gehört, und wenn ich solchen Code sehe, weiß ich auch warum. Wenn du dir nicht einen ganz furchtbaren Stil angewöhnen willst, den du später nur schwer wieder los wirst, solltest du dir ein anderes Buch zulegen. Zitieren
chillaz Geschrieben 12. Juni 2012 Geschrieben 12. Juni 2012 mal ne blöde Frage nebenbei: warum nutzt du die /* */ Zeichen bei einzeiligen Kommentaren? das is doch echt umständlich Zitieren
Kadaj Geschrieben 12. Juni 2012 Autor Geschrieben 12. Juni 2012 (bearbeitet) Achwas? Ich hatte mir auch schon einen Teil des C von A bis Z - Buches durchgelesen. Was genau ist denn schon jetzt stilistisch schlecht an dem bischen code? Ein anderes Buch? Soll mir nur Recht sein, nur welches? Ich habe allerdings nicht den Eindruck, dass ich mir dadurch überhaupt einen Stil angewöhne, ich lese mir nur durch wie was funktioniert und schreibe die Programme dann ohne mir das Buch zur Hilfe zu nehmen, meist nehm ich die man-Pages. mal ne blöde Frage nebenbei: warum nutzt du die /* */ Zeichen bei einzeiligen Kommentaren? das is doch echt umständlich Das habe ich mir in C angewöhnt. Ich musste im ersten Semester ein Programm als Beleg schreiben, welches portabel sein sollte. Daher habe ich immer mit gcc -Wall -pedantic kompiliert und der gcc hat mir alle // als Warnung angezeigt. Daher setz ich das jetzt immernoch so, ganz unbewusst... zählt das etwas auch schon zum schlechten Stil?^^ Gruß Bearbeitet 12. Juni 2012 von Kadaj Zitieren
Klotzkopp Geschrieben 13. Juni 2012 Geschrieben 13. Juni 2012 Was genau ist denn schon jetzt stilistisch schlecht an dem bischen code? Es ist nicht schlecht, es sieht aus wie C. C und C++ mögen verwandte Sprachen sein, aber die Art und Weise, wie man damit Probleme löst, ist komplett unterschiedlich. Darum halte ich es auch nicht für sinnvoll, zuerst C zu lernen, wenn man C++ lernen will. Man kann in C++ Programme wie in C schreiben. Das heißt aber nicht, dass man das sollte. Ein anderes Buch? Soll mir nur Recht sein, nur welches? Der C++ Primer soll gut sein, so wie Thinking in C++. Ich habe allerdings nicht den Eindruck, dass ich mir dadurch überhaupt einen Stil angewöhne, ich lese mir nur durch wie was funktioniert und schreibe die Programme dann ohne mir das Buch zur Hilfe zu nehmen, meist nehm ich die man-Pages.Das ist bei C++ nicht besonders zielführend. Auch gute Tutorials im Internet sind leider rar gesät. Benutz ein gutes Buch. Daher setz ich das jetzt immernoch so, ganz unbewusst... zählt das etwas auch schon zum schlechten Stil?^^Nein, aber es ist ein weiteres Indiz für das angesprochene Problem Für den Anfang: Lass die Finger von char-Arrays, char-Zeigern und allem, was in <cstring> steht und benutz statt dessen std::string. Statt Arrays kannst du std::array (wenn dein Compiler das schon kann) oder std::tr1::array benutzen, oder notfalls std::vector. Zitieren
Kadaj Geschrieben 14. Juni 2012 Autor Geschrieben 14. Juni 2012 Danke für die Tipps. Ich werd mir das Buch erstmal bis zu Ende durchlesen, weil ich schon 300 Seiten gelesen hab und die C++-Prüfung immer näher rückt, aber ich werde mir anschließend eines dieser Bücher zulegen um mir den schlechten Stil wieder abzuhewöhnen :-) Danke für die Hilfe! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.