typedef in Klassendeklaration



  • Hallo,

    kann mir wer sagen wieso folgendes nicht funktioniert.

    test.h :

    ...
    typedef int comp;
    
    class Queue {
    private:
      list<comp> li;
    ...
    }
    

    main.cc :

    ...
    #include "test.h"
    ...
    
    int main () {
      Queue q;
    return 0;
    }
    

    bekomme ständig folgende Fehler:
    test.h Fehler: ISO-C++ verbietet Deklaration von »list« ohne Typ
    test.h Fehler: expected »;« before »<« token

    woran liegt das??

    MfG
    Chris



  • Weil es std::list ist? 😉 Oder halt "using namespace std;" verwenden, aber des halt ich in Headern für net so doll.

    Soll heißen: An dem typedef is net wirklich was falsch.



  • aber des halt ich in Headern für net so doll

    Man sollte grundsätzlich versuchen den Gültigkeitsbereich eines Namespaces so klein wie möglich zu halten.

    In Header sollte man auf jedem Fall auf ein

    using namespace xyz

    verzichten. Das Problem das dabei entstehen kann ist die mehrfache Deklaration von Typen (Strukturen, Klassen, etc.).



  • @Chris986:
    Außerdem muss nach deiner Klassendefinition noch ein Semikolon stehen.



  • Danke,
    hätte ich auch selbst drauf kommen können dass es am Namensraum liegt.

    MfG
    Chris


Anmelden zum Antworten