000
16.10.2016, 11:57 Uhr
~Julia_w
Gast
|
Hallo Progger,
ich kriege kriege folgende Fehlermeldung während dem Kompilieren:
Code: |
main.cpp:17: error: `anzahl' was not declared in this scope
main.cpp:20: error: `anzahl' was not declared in this scope
main.cpp: In constructor `Boot::Boot(int, double)': main.cpp:23: error: no matching function for call to `strlen(std::string[20])' C:/Dev-Cpp/include/string.h:49: note: candidates are: size_t strlen(const char*) main.cpp:27: error: a function-definition is not allowed here before '{' token main.cpp:27: error: expected `,' or `;' before '{' token
main.cpp: In function `int main(int, char**)':
main.cpp:38: error: expected primary-expression before "void" main.cpp:38: error: expected `;' before "void" main.cpp:77: error: `menue' undeclared (first use this function) main.cpp:77: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp:78: error: no matching function for call to `Boot::Boot(int&, std::string[20], int)' main.cpp:12: note: candidates are: Boot::Boot(const Boot&) main.cpp:21: note: Boot::Boot(int, double) main.cpp:79: error: no matching function for call to `Boot::Boot(int&, std::string[20], int)' main.cpp:12: note: candidates are: Boot::Boot(const Boot&) main.cpp:21: note: Boot::Boot(int, double) main.cpp:80: error: no matching function for call to `Boot::Boot(int&, std::string[20], int)' main.cpp:12: note: candidates are: Boot::Boot(const Boot&) main.cpp:21: note: Boot::Boot(int, double)
|
leider weiss ich nicht was an meiner Konstruktordeklaration falsch sein soll. falls es an der fehlenden Konstrukturmethode liegt, habe ich auch eine 2. Variante geschrieben, bei der jedoch eine ähnliche Fehlermeldung kommt.
variante_1
C++: |
#include <cstdlib> #include <iostream> #include <string> #include <vector> using namespace std;
std::string namen[20]; // initialisieren eines Array aller Namen der Vereinsmitglieder std::string warteliste[10]; // initialisieren eines Array der überschüssigen gebuchten Namen std::string namensliste[20]; // initialisieren eines Array aller gebuchten Namen
class Boot //Deklaration der Klasse Boot { public: int anzahlBesatzung; // Anzahl der Besatzung std::string besatzungsliste[]; //initialisieren eines Array der Namen von Besatzung double Kosten; //Kosten für Bootcharter Boot(int anzahl, std::string namensliste[anzahl], double kostenBoot); //Oberklassenkonstrukter der Klasse Boot mit 3 Übergabewerten };
Boot::Boot(int anzahl, std::string namensliste[anzahl],double kostenBoot) //Konstruktor-Methode { anzahlBesatzung=anzahl+1; // for(int i=0; i<=strlen(namensliste); i++) (besatzungsliste[i]=namensliste[i]); Kosten=kostenBoot; int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert { cout<<"Kosten pro Person: (bootkosten/anzahl)"; return int(bootkosten/anzahl); } }
int main(int argc, char *argv[]) { int anzahlAnmeldungen=0; // Zähler der Anmeldungen void menue(void) // Menue-Funktion für diverse Wünsche { int *zeiger=0; // Pointer um die Arrays bearbeiten char tasteneingabe='0'; // Variable für die Tasteneingabe std::string tmp; // String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen do{ // Ausgabe des Menues cout<<" 1 Anzeige der bisher angemeldeten Personen. "<<endl; cout<<" 2 Anmeldung zur Segelwoche. "<<endl; cout<<" 3 Abmeldung. "<<endl; cout<<" 4 Programmende. "<<endl; cout<<" Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! "<<endl; cin>>tasteneingabe; // Eingabe über Tastatur if(tasteneingabe=='1') { for(int i=0; i<=strlen(namensliste); i++) { cout<<namensliste[i]<<endl; } } else if(tasteneingabe=='2') { anzahlAnmeldung++; cout<<"Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n"; scanf("%s", &tmp); strcpy(std::string namensliste[anzahlAnmeldungen], tmp); } else if(tasteneingabe=='3') { cout<<"Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n"; scanf ("%s", &tmp); //if(tmp==(*zeiger)namenliste[i]) //{ // (*zeiger)namensliste[i]=NULL; // anzahlAnmeldungen--; //} } else if(tasteneingabe=='4') break; }while(tasteneingabe !='0'); } menue(); if (anzahlAnmeldungen>=4 && anzahlAnmeldungen<6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4 else if (anzahlAnmeldungen>=6 && anzahlAnmeldungen<8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6 else if (anzahlAnmeldungen>=7 && anzahlAnmeldungen<8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8 system("PAUSE"); return EXIT_SUCCESS; }
|
Variante_2
C++: |
#include <vector> #include <string> #include <iostream> using namespace std;
std::string namen[20]; // initialisieren eines Array aller Namen der Vereinsmitglieder std::string warteliste[10]; // initialisieren eines Array der überschüssigen gebuchten Namen std::string namensliste[20]; // initialisieren eines Array aller gebuchten Namen
class Boot //Deklaration der Klasse Boot { public: int anzahlBesatzung; // Anzahl der Besatzung std::string besatzungsliste[]; //initialisieren eines Array der Namen von Besatzung double Kosten; //Kosten für Bootcharter Boot(int anzahl,string namensliste[anzahl],double kostenBoot); //Oberklassenkonstrukter der Klasse Boot mit 3 Übergabewerten { anzahlBesatzung=anzahl+1; // for(int i=0; i<=strlen(namensliste); i++) (besatzungsliste[i]=namensliste[i]); Kosten=kostenBoot; int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert { cout<<"Kosten pro Person: (bootkosten/anzahl)"; return int(bootkosten/anzahl); } };
int main(int argc, char *argv[]) { int anzahlAnmeldungen=0; // Zähler der Anmeldungen void menue(void) // Menue-Funktion für diverse Wünsche { int *zeiger=0; // Pointer um die Arrays bearbeiten char tasteneingabe='0'; // Variable für die Tasteneingabe std::string tmp; // String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen do{ // Ausgabe des Menues cout<<" 1 Anzeige der bisher angemeldeten Personen. \n"; cout<<" 2 Anmeldung zur Segelwoche. \n"; cout<<" 3 Abmeldung. \n"; cout<<" 4 Programmende. \n"; cout<<" Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! \n"; cin>>tasteneingabe; // Eingabe über Tastatur if(tasteneingabe=='1') { for(int i=0; i<=strlen(namensliste); i++) { cout<<namensliste[i]<<endl; } } else if(tasteneingabe=='2') { anzahlAnmeldung++; cout<<"Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n"; scanf("%s", &tmp); strcpy(std::string namensliste[anzahlAnmeldungen], tmp); } else if(tasteneingabe=='3') { cout<<"Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n"; scanf ("%s", &tmp); //if(tmp==(*zeiger)namenliste[i]) //{ // (*zeiger)namensliste[i]=NULL; // anzahlAnmeldungen--; //} } else if(tasteneingabe=='4') break; }while(tasteneingabe !='0'); } menue(); if (anzahlAnmeldungen>=4 && anzahlAnmeldungen<6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4 else if (anzahlAnmeldungen>=6 && anzahlAnmeldungen<8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6 else if (anzahlAnmeldungen>=7 && anzahlAnmeldungen<8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8 system("PAUSE"); return EXIT_SUCCESS; }
|
|