Vector des Datentyps class



  • Ich habe zwei klassen: KLASSE1, KLASSE2

    In der .h Datei von KLASSE1 will ich nun eine Klassenvariable:

    static vector<KLASSE2> klvector;

    erstellen, allerdings bekomme ich beim Compilieren eine Fehlermeldung:
    -error C2143: Syntaxfehler: Es fehlt ';' vor '<'
    -error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    -error C2238: Unerwartete(s) Token vor ';'

    Wenn ich den Vector in der main-methode erstelle gibt es keine probleme 😕



  • Du musst KLASSE2 natürlich vor der Deklaration von klvector definieren.
    Und std:: vor vector schreiben, ich nehme an du schüttest nicht den std-Namensraum gleich im Header aus (oder überhaupt, ist immer ne schlechte Idee)?



  • KLASSE2 existiert, beinhaltet ein paar Objektvariablen und hat einen Standart-constructor, oder was genau meinst du mit "definieren".

    Habe "namespace std" im stdafx includiert, ist das ein Problem ?



  • Analyse schrieb:

    KLASSE2 existiert, beinhaltet ein paar Objektvariablen und hat einen stan****-constructor, oder was genau meinst du mit "definieren".

    Du hast den QuellCode (der Definition) natürlich vor der Headerdatei von KLASSE1 eingebunden, oder?
    Also so:

    #include "KLASSE2.cxx"
    
    class KLASSE1
    //...
    

    Zum anderen:
    Probleme, Probleme... Schönheit. Stil.



  • Ja, eingebunden ist er auch in der stdfax.



  • Und du hast (sehr blöde Frage) auch <vector> implementiert? Und zwar nicht in irgeneinem Namensraum?



  • Und du hast (sehr blöde Frage) auch <vector> implementiert? Und zwar nicht in irgeneinem Namensraum?

    Man da verfasse ich gerade den nächsten post, lese nochmal genau nach, probiere aus und..
    es lag tatsächlich am fehlenden Import von <vector>.
    Wenn ich <vector> oben in der .h datei includiere funktioniert es, wenn ich einen stdfax.h import mache und <vector> dort includiere nicht 😕



  • Analyse schrieb:

    Wenn ich <vector> oben in der .h datei includiere funktioniert es, wenn ich einen stdfax.h import mache und <vector> dort includiere nicht 😕

    Dort ist kein Namensraum? Du inkludierst es vor der Headerdatei? Usw. Das sind Grundkenntnisse, die man beim Umgang mit Modulen haben sollte, aber nicht verzweifeln!

    Erste Regel: So spät wie möglich, so früh wie nötig. Das du <vector> in der Header-Datei Implementierst ist gut und richtig. Schön so lassen! Ansonste gab es noch einen sehr schönen Beitrag von wSkip zu dem Thema.



  • Konnte den Beitrag von wSkip nicht finden, aber danke für die Hilfe, das labyrinth ist ein bischen klarer geworden. 🙄 🙂





  • Danke.


Anmelden zum Antworten