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