010
20.10.2016, 21:02 Uhr
~Julia_w
Gast
|
ich habe eure Anregungen aufgegriffen. Jetzt sollte auch die Buisness-Logik passen, oder? Leider bekomme ich folgende Fehlermeldung:
Code: |
main.cpp:92: error: redeclaration of `__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > > iter'
main.cpp:77: error: `__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > > iter' previously declared here
make.exe: *** [main.o] Error 1
|
... wenn ich """"std::vector<std::string>::iterator iter....""" hintereinander einsetzte. bei euch auch, oder liegt es auch an dem c++11/14 Standard?
C++: |
#include <cstdlib> #include <iostream> #include <string> #include <algorithm> #include <vector> #include <iterator> #include <utility> #include <stdio.h> using namespace std;
std::vector<std::string> namen; // initialisieren eines Vector/Array aller Namen der Vereinsmitglieder std::vector<std::string> warteliste; // initialisieren eines Vector/Array der überschüssigen gebuchten Namen std::vector<std::string> namensliste; // initialisieren eines Vector/Array aller gebuchten Namen int anzahlAnmeldungen=0; // Zähler der Anmeldungen
class Boot //Deklaration der Klasse Boot { public: int anzahlBesatzung; // Anzahl der Besatzung vector<string> besatzungsliste; //initialisieren eines Array der Namen von Besatzung ohne Kapitän double Kosten; //Kosten für Bootcharter Boot(const vector<string> &namensliste, double kostenBoot): besatzungsliste(namensliste), Kosten(kostenBoot) //Konstrukter der Klasse Boot mit 2 Übergabewerten { for(int i=0; i<=besatzungsliste.size(); i++) (besatzungsliste=namensliste); //da besatzungsliste noch leer ist, mit Vector statt Array arbeiten Kosten=kostenBoot; //Kosten für den Bootscharter zuweisen von Übergabewert anzahlBesatzung=namensliste.size(); //übergebene Namensliste der Besatzungsliste zuweisen ausgabe(); //Ausgabefunktion aufrufen } void ausgabe() // Ausgabefunktion { printf ("\n Besatzungsanzahl: Charterkosten: \n"); //Ausgabe Überschrift printf ("%5d %25.2f \n", besatzungsliste.size(), Kosten ); // formatierte Ausgabe der Besatzungsanzahl und der Kosten für Bootscharter für gebuchtes Boot cout<<"______________________________________________________________________________"<<endl; cout<<"Besatzungliste :\n"; for(int i=0; i<besatzungsliste.size(); i++) //Ausgabe der Besatzungsliste { cout<<besatzungsliste.at(i)<<endl; } cout<<" Kosten pro Teilnehmer: \n"<< (Kosten/(anzahlBesatzung))<<endl; // Ausgabe der Kosten pro (Teilnehmer ohne Kapitän) } };
void menue(void) // Menue-Funktion für diverse Wünsche { char tasteneingabe='0'; // Variable für die Tasteneingabe 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') // wenn, Eingabe Ziffe 1 { for(int i=0; i<namensliste.size(); i++) { cout<<namensliste.at(i)<<endl; } } else if(tasteneingabe=='2') // wenn, Eingabe Ziffe 2 { anzahlAnmeldungen++; cout<<"Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n"; cin >> tmp; //zwischenspeichern der Tastatureingabe if (namensliste.size()<7) namensliste.push_back(tmp); //zuweisen der Zwischenspeicherung an Vector else if(namensliste.size()>7) warteliste.push_back(tmp); //zuweisen der Zwischenspeicherung an Vector } else if(tasteneingabe=='3') // wenn, Eingabe Ziffe 3 { cout << "Bitte ihren Namen eingeben, um diesen der Anmelde- bzw. Warteliste abzumelden.\n"; cin >> tmp; //Einlesen des Namen über Tastatur in tempo. Stringbariablle std::vector<std::string>::iterator iter = std::find(namensliste.begin(), namensliste.end(), tmp); // Durchsuchen des Vector "namenliste" if (iter == namensliste.end()) //...Durchlauf beendet { cout << "Name nicht auf Anmeldeliste gefunden! \n"; } else { namensliste.erase(iter); //...Vectorinhalt == iteratorinhalt cout << "Ihr Name wurde von der Anmeldeliste gelöscht \n"; } /*if((namensliste.size()<7)) // wenn Namensliste weniger als 7 Personen, dann... { namensliste.push_back(warteliste.at(0)); //verschiebe Warteliste(0) zu Namensliste(7) warteliste.push_back(std::move(warteliste.at(0))); }*/ std::vector<std::string>::iterator iter =std::find(warteliste.begin(), warteliste.end(), tmp); // Durchsuchen des Vector "warteliste" if (iter == warteliste.end()) //...Durchlauf beendet { cout << "Name nicht auf Warteliste gefunden! \n"; } else { warteliste.erase(iter); //...Vectorinhalt == iteratorinhalt cout << "Ihr Name wurde von der Warteliste gelöscht \n"; } } else if(tasteneingabe=='4') break; // wenn, Eingabe Ziffe 4 } while(tasteneingabe !='4'); // Menüabbruch wenn, Eingabe Ziffe 4 }
int main(int argc, char *argv[]) { menue(); //Aufruf des Menü if (anzahlAnmeldungen>=3 && anzahlAnmeldungen<5) Boot Boot_4(namensliste, 1000); // Definition und Initialisierung der Object Boot_4 else if (anzahlAnmeldungen>=5 && anzahlAnmeldungen<7) Boot Boot_6(namensliste, 1300); // Definition und Initialisierung der Object Boot_6 else if (anzahlAnmeldungen==7) Boot Boot_8(namensliste, 1500); Boot Boot_8(namensliste, 1500); // Definition und Initialisierung der Object Boot_8
system("PAUSE"); }
|
|