expected primary-expression before ']' token ???
-
hi@all hab da ein problem und weis da net weiter.
das ist die klassen.cpp datei#include <iostream> #include <string.h> #include "klassen.h" using namespace std; Medium::Medium(int signatur,char titel[],bool leihstatus,string typ) { this->signatur=signatur; strcpy(this->titel,titel); this->leihstatus=leihstatus; this->typ=typ; } /* Medium::showMedium() { cout<<"Signatur "<<"Typ "<<"Titel "<<"Status"; cout<<endl; cout<<signatur<<" "<<typ<<" "<<titel<<" "; } */ Buecher::Buecher(int signatur,char titel[],bool leihstatus,string typ,int seitenanzahl):Medium(signatur,titel[],leihstatus,typ) { this->seitenanzahl=seitenanzahl; } Videos::Videos(int signatur,char titel[],bool leihstatus,string typ,float spieldauer):Medium(signatur,titel[],leihstatus,typ) { this->spieldauer=spieldauer; }
das ist die klassen.h datei
#include <string.h> using namespace std; class Medium { protected: int signatur; char titel[200]; bool leihstatus; string typ; public: Medium(int,char[],bool,string); ~Medium(){}; //void showMedium(); }; class Buecher : public Medium { private: int seitenanzahl; public: Buecher(int,char[],bool,string,int); ~Buecher(){}; }; class Videos : public Medium { private: float spieldauer; public: Videos(int,char[],bool,string,float); ~Videos(){}; };
die fehler vom compiler:
In constructor
Buecher::Buecher(int, char*, bool, std::string, int)': expected primary-expression before ']' token In constructor
Videos::Videos(int, char*, bool, std::string, float)':
expected primary-expression before ']' token
-
habkeinen schrieb:
...
... Buecher::Buecher(...):Medium(signatur,titel[] // <-- Mit leeren Klammern kann der Compiler hier nichts anfangen
...
Gruß,
Simon2.
-
):Medium(signatur,titel[],leihstatus,typ)
Schreib das mal so:
):Medium(signatur,titel,leihstatus,typ)
Beim anderen Beispiel auch!
-
habkeinen schrieb:
In constructor
Buecher::Buecher(int, char*, bool, std::string, int)': expected primary-expression before ']' token In constructor
Videos::Videos(int, char*, bool, std::string, float)':
expected primary-expression before ']' tokenSolche Fehler könnte man sehr leicht selber lösen, wenn man sich nicht zu schade ist, die Fehlermeldungen auch nur ein Stück weit zu lesen...
Mit minimalen Englischkenntnissen erkennt man sehr gut, dass da etwas vor der Klammer ] vergessen wurdeIch meine das nur als Hinweis für die Zukunft... Denn wenn du Fehlermeldungen nicht genau liest, kommst du in C++ nicht weit
-
Naja ... ich wäre da nicht ganz so hart. Immerhin gehört "primary-expression" (gibt's da eigentlich ein deutsches Pendant zu ?) nicht unbedingt zum täglich verwendeten Vokabular eines C++-Programmierers und außerdem gehört nach meiner Erfahrung das gezielte Ignorieren/Interpretieren/Querlesen von Compilerfehlermeldungen zu den wichtigen Skills in C++, die man erstmal blutig sammeln muss.
Gruß,
Simon2.
-
thx leute
-
Eigentlich wollte ich nur sagen, dass es prinzipiell eher besser ist, man schaut sich die Fehlermeldungen in Ruhe an. Häufig kommt man dadurch selber in akzeptabler Zeit zum Ziel. Um die Fehlersuche herum kommt man sowieso nicht, wenn man ernsthaft programmieren will. Später sind es vielleicht weniger Syntaxfehler, sondern eher Logik- und Laufzeitfehler, deren Behebung dann auch um einiges schwieriger ist.
Nicht dass der Eindruck entsteht, ich hätte etwas dagegen, wenn Leute hier ihre Fragen stellen!Simon2 schrieb:
außerdem gehört nach meiner Erfahrung das gezielte Ignorieren/Interpretieren/Querlesen von Compilerfehlermeldungen zu den wichtigen Skills in C++, die man erstmal blutig sammeln muss.
Ich hoffe, du meinst damit Warnungen, denn mit Ignorieren der Fehlermeldungen wird man Mühe haben, ein Programm zum Laufen zu bringen
Nein, es ist schon klar, dass Fehlermeldungen einen wichtigen Teil der Programmierung ausmachen, allerdings glaube ich nicht, dass der Threadersteller seine Klammer mit Absicht ignoriert hatSimon2 schrieb:
"primary-expression" (gibt's da eigentlich ein deutsches Pendant zu ?)
Ich würd mal sagen, "Primär-Ausdruck"
Nein, keine Ahnung, wie das auf deutsch heisst. Ich selber habe diesen Fehler früher oft gehabt, sodass er bei mir fast als alltäglich durchgehen würde (zugegeben in letzter Zeit passiert er mir kaum noch)
-
Hi Nexus,
ich stimme Dir natürlich zu und wollte nur Deiner ersten Formulierung ein wenig die (von mir empfundenen) Schärfe nehmen.
Nexus schrieb:
...
Simon2 schrieb:
außerdem gehört nach meiner Erfahrung das gezielte Ignorieren/Interpretieren/Querlesen von Compilerfehlermeldungen zu den wichtigen Skills in C++, die man erstmal blutig sammeln muss.
Ich hoffe, du meinst damit Warnungen, denn mit Ignorieren der Fehlermeldungen wird man Mühe haben, ein Programm zum Laufen zu bringen :D...
Nein, ich meine das Ausfiltern von z.B. typischen Folgefehlermeldungen. Aus meinen eigenen Pascalzeiten und aus nicht wenigen Anfängerpost hier im Forum kenne ich den Ansatz: "Erstmal alle Fehler(-meldungen) beseitigen und dann neu compilieren".
Beim Umstieg auf C++ musste ich erstmal umlernen, "inkrementell" vorzugehen: "Erstmal nur die erste Fehlermeldung zu einem bestimmten Codeblock bearbeiten, den Rest ignorieren und neu compilieren"....
Es gehört einfach sehr viel Erfahrung zur Bewertung von Fehlermeldungen in C++ (im Gegensatz z.B. zu Pascal, wo man sich schon fragen konnte, warum der Compiler das nicht direkt selbst korrigiert) - und den Mangel daran kann man IMHO Anfänger nicht vorwerfen.Gruß,
Simon2.
P.S.: Sehr lustig finde ich auch immer Meldungen wie "Ich habe noch 398 Fehler in meinem Programm - Hilfe !!" ... nicht selten ein einziges vergessenes ';'.