[C/C++] Vektor aus Klassenelementen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Characticl D, 15. Februar 2010 .

Schlagworte:
  1. 15. Februar 2010
    Vektor aus Klassenelementen

    Folgende Ausgangssituation:

    Headerdatei 1:
    Code:
    class A
    {
    int bla;
    int bla1;
    int bla2;
    ...
    };
    
    Headerdatei 2:
    Code:
    class B
    {
    vector<A> vec;
    };
    
    Liefert folgende Fehlermeldungen:

    Code:
    B.hpp: error C2065: 'A': nichtdeklarierter Bezeichner
    B.hpp: error C2955: 'std::vector': für die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich
    
    
    Könnte schwören, letzte Woche hat es noch funktioniert.
    Musste aber den Code neuschreiben, zwecks Datencrash.
    
    Wo liegt das Problem?
    
    
     
  2. 15. Februar 2010
    AW: Vektor aus Klassenelementen

    Code:
    #include <vector>
    #include "A.h"
    
    
    class B
    {
    std::vector<A> vec;
    };
    
    oder du nimmst halt den namespace gleich mitauf

    Code:
    using namespace std
     
  3. 15. Februar 2010
    AW: Vektor aus Klassenelementen

    Allerdings ist ein "using namespace" in Headern grundsätzlich eine schlechte Idee. In Headern schreibt man in der Regel den kompletten Namen, in Sourcefiles kann man dann die Namespaces auflösen.
     
  4. 15. Februar 2010
    AW: Vektor aus Klassenelementen

    Kannst du das näher erläutern?
    Ich hatte die Includes so gesetzt, letztendlich muss es ein Schreibfehler gewesen sein.
    Habe die Dateien gelöscht und neugeschrieben.

    BWs raus...
     
  5. 15. Februar 2010
    AW: Vektor aus Klassenelementen

    Ich ging auf das
    von rushzero ein. Man sollte kein "using namespace" in Headern verwenden, sondern nur in Sourcefiles.
     
  6. 15. Februar 2010
    AW: Vektor aus Klassenelementen

    Ja, das war mir klar aber warum sollte man das nicht machen?
    Sollte man dann immer z.B. std::vector ausschreiben?

    Im Übrigen ist der Fehler doch nicht behoben, war wohl kein Schreibfehler.
    Der Fehler tritt erst nach definieren des Konstruktors/Destruktors auf, also erst, nachdem ich folgendes in mein Sourcefile geschrieben habe:

    Code:
    B::B()
    {
    }
    
    B::~B
    {
    }
    
     
  7. 15. Februar 2010
    AW: Vektor aus Klassenelementen

    Das ist einfach ein schlechter Stil. Wenn du eine fremde Lib einbindest, willst du doch auch nicht, dass die dir x verschiedene Namespaces auflöst, oder?

    Poste mal einen ganzen Beispielcode, weil so macht der Fehler überhaupt keinen Sinn.
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.