Compiler erkennt Vectorklasse nicht



  • Hey zusammen! 😃

    ich hab mir zwei Klassen erstellt, wobei die Klasse2 einen Vector der Klasse1 beinhaltet.

    Mein Compiler sagt mir
    global.h||error: 'vector' in namespace 'std' does not name a type|

    ich hab keine Ahnung, wie ich das beheben kann 😞

    Hier meine beiden Klassen (dürfen doch in einer Header-Datei sein, oder?):

    #ifndef GLOBAL_H
    #define GLOBAL_H
    
    class Flugzeug
    {   public:
            int Richtung;
            int Flugnr;
            int RestTime;
            int Termin;
            int InitTime;
    
            Flugzeug();
            virtual ~Flugzeug();
        protected:
        private:
    };
    
    class global
    {
        public:
            global();
            virtual ~global();
    
            .
            .
            viele Variablen
            .
            .
    
            std::vector<Flugzeug> bodenfl;
            std::vector<Flugzeug>::iterator i_bodenfl;
            std::vector<Flugzeug> luftfl;
            std::vector<Flugzeug>::iterator i_luftfl;
            std::vector<Flugzeug> bodenleer;
            std::vector<Flugzeug>::iterator i_bodenleer;
    
        protected:
        private:
    };
    
    #endif // GLOBAL_H
    


  • #include <vector>
    

    Wäre eine gute Idee 😉



  • ich geh kurz weinen - danke 😡



  • Ein paar Stilanmerkungen:

    Du solltest Destruktoren nicht standardmässig virtuell machen, sondern nur wenn du tatsächlich polymorphe Basisklassen hast. In dem Fall solltest du auch dafür sorgen, dass Kopierkonstruktor und Zuweisungsoperator deaktiviert sind. Siehe auch Regel der Grossen Drei.

    Iteratoren als Member zu halten ist meist falsch. Warum sind sie Teil des Zustands der Klasse? Wenn du über die Container iterierst, deklariere die Iteratoren lokal. Generell solltest du den Gültigkeitsbereich von Variablen so klein wie möglich halten.

    Und natürlich solltest du daran denken, die Membervariablen zu kapseln statt alles öffentlich zu machen.


Anmelden zum Antworten