vector in eigener Klasse



  • Hi,

    ich hab ein Problem mit einem vector in meiner Klasse. Wenn ich in meiner Klasse den vector anlege wird beim compilieren der Datentyp nicht erkannt.

    Fehlermeldung "[C++ Fehler] Tiles_Fachklasse.h(30): E2303 Typname erwartet"

    Die Klasse sieht so aus:

    class CHexMap
    {
       private:
       vector<int> test;
    
       public:
          CHexMap(int FelderX, int FelderY);
    };
    

    Ich habe im Header-File noch folgende deklarationen getätigt:

    #pragma hdrstop
    
    #include "Tiles_Fachklasse.h"
    #include <vector>
    
    using namespace std;
    

    Hoffentlich kann mir jemand helfen. Bye

    <edit>Bitte Code-Tags verwenden!</edit>

    [ Dieser Beitrag wurde am 07.06.2003 um 12:06 Uhr von junix editiert. ]



  • Original erstellt von <Sanguaire>:
    Ich habe im Header-File noch [...]

    Im Header oder implementationsfile?



  • Sorry hab mich geirrt, ist natürlich im Implementationsfile (.cpp).



  • Dann ist doch klar, dass vector als typ nicht erkannt wird? Woher soll das Headerfile denn wissen, was du im implementationsfile includest und welche namespaces du verwendest`? (o;

    -junix



  • @junix: Dein Denkanstoß ob Header oder CPP-File war gut. Hab die Deklaration in den Header gepackt und dann lief es. Hab vielen dank

    //---------------------------------------------------------------------------
    
    #ifndef Tiles_FachklasseH
    #define Tiles_FachklasseH
    
    #include <vector>
    using namespace std;
    //---------------------------------------------------------------------------
    
    class CTile
    {
       private:
          int Seitenlaenge,
              XPos,
              YPos;
    
       public:
          CTile();
    
          void Set_Seitenlaenge(int Laenge);
          void Set_Pos(int X, int Y);
    
          int SeiteA();
          int TileH();
    
    };
    
    class CHexMap
    {
       private:
          vector<vector<CTile> > HexMap;
    
       public:
          CHexMap(int FelderX, int FelderY);
    };
    
    #endif
    


  • Noch ne kleine Anmerkung zu deinem Code:

    Benutze using namespace nie in einem Header-File! Wenn jemand deinen Header includiert und vorher schon einen anderen Namespace eingestellt hat könnte es zu Problemen kommen, da du in deinem Header std als Standard-Namespace eingestellt hast:

    using namespace WasWeißIch;
    
    #include "HeaderVonKlasseA.h"
    #include "Tiles_Fachklasse.h"
    
    int main()
    {
        KlasseA test; //Fehler, da KlasseA im Namespace WasWeißIch und nicht im Namespace std
        return 0;
    }
    


  • Wie soll ich dann einen vector in meinem Headerfile einbinden, wenn using namespace nicht in der Klassendeklaration steht? Wenn ich using namespace entferne wird der Typ wieder nicht erkannt.



  • Du brauchst using namespace nicht dringen.Du kannst auch einfach std::vector angeben.

    -junix



  • Danke für Euren Rat. Noch eine kleine Frage. using namespace kann ich doch trotzdem in der Implementationsdatei verwenden oder macht das Probleme?



  • Ne im Implementationsfile ist das schon ok.

    -junix


Anmelden zum Antworten