Struct - was macht er da?



  • hallo!

    typedef struct  SignalStates 
    {
    	.....
    } SignalStates;
    

    im code:

    SignalStates SignalStates; //ok - klappt
    //nun pointer auf Signalstates anlegen (bin im Konstruktor)
    SignalStates* pSignalStates; //peng! funktioniert nicht! WIESO???
    
    //und wieso funktioniert:
    struct SignalStates* pSignalStates; //?????
    

    gruss uwe



  • In C war es pflicht vor der Variablendeklaration mithilfe von structs auch ein struct zu schreiben. Bei C++ muss man das nicht, es geht aber immer noch.

    mfg
    Glamdring



  • gut,
    aber, wenn den pointer ohne dieses struct deklariere kiege ich folgende fehler-
    meldung:
    (87): error C2327: 'CInterface::SignalStates' : member from enclosing class is not a type name, static, or enumerator

    kapiere ich irgendwie nicht?! 😕

    gruss uwe



  • UweM schrieb:

    [cpp]
    SignalStates SignalStates; //ok - klappt
    //nun pointer auf Signalstates anlegen (bin im Konstruktor)
    SignalStates* pSignalStates; //peng! funktioniert nicht! WIESO???

    Die Fehlermeldung gibt Aufschluss:
    struct.cc:4: `pSignalStates' undeclared (first use this function)

    Das heißt, was du für eine Deklaration hältst, ist keine. Was könnte es denn sonst sein? Klar, ein Multiplikationsausdruck! Dadurch dass du SignalStates in der Deklaration vorher als Variablenname eingeführt hat, wird der Typname überdeckt und die folgende Deklaration nicht mehr als solche erkannt.

    Wenn du dem Drang nachgeben könntest, Variablen wie ihre Typen zu nennen, würde sich das Problem von selbst lösen 😉

    BTW ist es in C++ nicht nötig, typedefs für Strukturen zu schreiben.



  • @Bashar
    ja, genau - jetzt iss alles klar!
    Danke!


Anmelden zum Antworten