Klassenvariablen in switch undeclared



  • Hallo, ich bin gerade dabei C++ zu lernen und heute bin ich auf ein Problem gestoßen bei dem ich nicht mehr weiterkomme...

    #include <iostream>
    using namespace std;
    
    class Mitarbeiter
    {
          friend class ListeVonMitarbeitern;
    
          private: 
          string Mitarbeitername;
          int Mitarbeiternummer;
          int Zimmernummer;
          Mitarbeiter* Nachfolger;
    
          public:
          Mitarbeiter(string name = '', int mNr = 0, int zNr = 0):Mitarbeitername(name), Mitarbeiternummer(mNr), Zimmernummer(zNr), Nachfolger(0)
          {}
          int getMitarbeiternummer()const{return Mitarbeiternummer;}
          int getZimmernummer()const{return Zimmernummer;}
          void Schluesselvergeben(int Zimmernummer){}
          Mitarbeiter* next(){return Nachfolger;}
          void print()const{cout << "Mitarbeitername: " << Mitarbeitername << "Mitarbeiternummer: " << Mitarbeiternummer << endl;}
          void find(int Mitarbeiternummer){}
    };
    class ListeVonMitarbeitern
    {
          private:
          Mitarbeiter *Head;
    
          public:
          ListeVonMitarbeitern():Head(0){}
          void insert (Mitarbeiter * mb)
               {mb->Nachfolger = Head;
               Head = mb;}
          Mitarbeiter * remove()
               {Mitarbeiter * mb = Head;
               if(mb!=0)
                  {Head = mb->Nachfolger;
                  mb->Nachfolger = 0;
                  }
               return mb;
               }
          Mitarbeiter * begin() const {return Head;}
          bool empty()const{return Head == 0;}
          inline Mitarbeiter * find(int)const;
    };
    Mitarbeiter * ListeVonMitarbeitern::find(int mNr)const
          {
          Mitarbeiter * mb;
          for(mb = begin();
          mb != 0;
          mb = mb->next())
             if(mb->getMitarbeiternummer() == mNr)
             break;
          return mb;
          }
    
    int main()
    {
        int Auswahl;
        cout << "Guten Tag" << endl << endl;
        cout << "Waehlen Sie eine der folgenden Aktionen aus: " << endl << endl;
        cout << " 1: Schluesselausgabe" << endl;
        cout << " 2: Mitarbeiter suchen" << endl;
        cout << " 3: Ausgabe aller Mitarbeiter mit Schluesseln" << endl;
        cout << " 4: Abbrechen" << endl << endl;
        cout << "Ihre Auswahl: ";
        cin >> Auswahl;
        switch (Auswahl) {  
          case 1:
               cout << "Schluesselausgabe" << endl << endl;
               cout << "Mitarbeiternummer: ";
               cin >> mNr;
               mb = list.find(mNr);
               if(mb != 0)
                     cerr << "Mitarbeiternummer existiert bereits!"<< endl;
               else
                     list.insert(new Mitarbeiter(mNr));
               break;
          case 2:
               cout << "Mitarbeiter suchen" << endl << endl;
               cout << "Mitarbeiternummer: ";
               cin >> mNr;
               mb = list.find(mNr);
               if(mb == 0)
               {cerr << "Nummer existiert nicht" << endl;}
               else {mb->print();}
               break;
          case 3:
               cout << "Ausgabe aller Mitarbeiter mit Schluesseln" << endl << endl;
               for(mb=list.begin();
                   mb!=0;
                   mb = mb->next())
                   mb->print();
               break;
          case 4:
               cout << "Auf Wiedersehn" << endl << endl;
               goto Schluss;
          default: cout << "Die Auswahl ist nicht korrekt!" << endl << endl;
          goto Schluss;   
          }
    
        Schluss:
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Der Compiler sagt mir: list, mb und mNr undeclared (first use this function)
    aber ich habe sie doch in der Klasse deklariert oder nicht?

    wäre toll wenn mir jemand weiterhelfen könnte!



  • Formatiere deinen Quelltext doch bitte erst einmal vernünftig. Vielleicht entdeckst du den Fehler dann selbst. Wenn nicht, hier ein Tipp: Beachte den Scope von Variablen.

    Leere Zeilen sind nicht böse!


  • Mod

    Beschäftige dich mal damit, wie das mit dem Gültigkeitsbereich (im Englischen Scope) von Variablen funktioniert.



  • ja das hab ich mir von Anfang an gedacht, dass es am Gültigkeitsbereich liegt...

    ich habe nur ein Beispielprogramm vor mir, dass genauso funktioniert und da soll es klappen, laut meinem tut...



  • Unter Garantie nicht.


Anmelden zum Antworten