Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » fehlerhafter Konstruktor in Klasse

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
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");
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
20.10.2016, 21:16 Uhr
~Julia_w
Gast


habe erst jetzt gesehen, dass ich "iter" bereits schon deklariert hatte. jetzt passt es.

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 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)));
           }*/

        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");
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: