struct Typneudefinition unter SDI



  • Hallo zusammen,
    ich habe ein sehr großes Problem.
    Es handelt sich um einen Server dem ich eine Class mit lauter structs, leider sagt mir der Compiler wenn ich diese Class einbinden möchte folgendes:
    d:\daten\c++\fuhrpark\mfc common\dataadministration.h(4) : error C2011: 'UserData_ST' : 'struct' Typneudefinition
    d:\daten\c++\fuhrpark\mfc common\dataadministration.h(4) : Siehe Deklaration von 'UserData_ST'

    Diese Fehlermeldung bekomme ich für alle meine structs und ich weiß nicht warum, wenn ich die struct in einer Consolen-Anwendung laufen lasse dann funktioniert alles.
    Das sind meine structs:´

    struct UserData_ST 
    { 
       std::string category; 
       std::string userName; 
       std::string password; 
       std::string userRights; 
       std::string personalNumber; 
    }; 
    
    struct ErrorDetection_ST 
    { 
       bool error; 
    }; 
    
    struct Server_ST 
    { 
       UserData_ST User; 
       ErrorDetection_ST Error; 
    };
    

    Kann mir jemand weiterhelfen?

    gruß Silver



  • blind geraten: Du hast die "Include Guards" vergessen (und der Header wird auf verschiedenen Umwegen doppelt in dein Programm eingebunden).



  • Ich hab die include nicht mit gepostet. Die include ist #include <string> andere benötige ich nicht.
    Aber wieso wird der Header nur bei einer SDI-Anwenudung gedoppelt? In ner Konsole funktioniert das alles.



  • Silvercreast schrieb:

    Ich hab die include nicht mit gepostet. Die include ist #include <string> andere benötige ich nicht.

    😮 Vielleicht solltest du dich mal schlau machen, was ein "Include Guard" ist.

    Aber wieso wird der Header nur bei einer SDI-Anwenudung gedoppelt? In ner Konsole funktioniert das alles.

    Vermutlich weil du ihn mehrfach in deinem Projekt benötigt hast (z.B. im View und im Doc).



  • Hmm ich weiß jetzt was du meinst #ifndef H_..... und #define H_.....
    Wenn ich das gleiche mit ner Class mache dann geht das auch nur nicht mit struct's ich versteh das einfach nicht. Ich habe jetzt alle genau identisch gemacht zwischen Class und struct's.



  • Hmm ich weiß jetzt was du meinst #ifndef H_..... und #define H_.....

    Ja, genau das (wobei beide zusammenstehen sollten und den selben Bezeichner verwenden).

    Und offenbar hast du es doch nicht identisch gemacht - die Wirkungsweise der Guards hat nämlich überhaupt nichts damit zu tun, WAS sie eigentlich schützen.

    (Zeig doch mal den kompletten Code deines Headers)


Log in to reply