Zum Inhalt springen

C++ Dummer Anfängerfehler


Kadaj

Empfohlene Beiträge

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich bin zurzeit dabei mir das C++ - Buch von A-Z durchzulesen
Ich 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

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 von Kadaj
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...