struct-Mitglieder werden nicht erkannt



  • @ Unregistrierter

    Ok es ist kein Member es ist 'nur' eine Variable.

    Ich hoffe es fühlt sich jetzt keine mehr auf den Schlips getreten. 🙄

    MFG
    Kai



  • ignoriere kaies post. voelliger unsinn.



  • @ PeterTheMaster
    Was ist daran unsinn? Ich hoffe du erklärst es, so das ich auch was aus meinen Fehlern lernen kann.

    MFG
    Kai



  • als variablen bezeichnet man informationbeinhaltende konstrukte ausserhalb von klassen.
    innerhalb von klassen nennt man solche konstrukte dann attribute.



  • Die Fehlermeldung sagt, daß "class vector<NormalWert,allocator<NormalWert> >" kein Member "normalWert" hat, *nicht* daß dieser Member bei der Struct NormalWert fehlt. Im geposteten Code scheint mir alles richtig zu sein, aber könntest du irgendwo statt "normalWertListe[anzahl].normalWert" nur "normalWertListe.normalWert" geschrieben haben?

    @KaiE:
    In C++ kann man ein Struct wie eine Klasse deklarieren. Deshalb ist Hanns Deklaration völlig OK. Dein Beispiel mit typedef ist C und deshalb veraltet.

    Stefan (ehemals StefanD).



  • Nun wird es ja immer schlimmer. ich habe KAiE Rat befolgt:

    struct tag_NormalWert {
            string male  ;
            string alterInTagen;
            string normalWert;
            string validFrom ;
    }NormalWert;
    
    vector<NormalWert> normalWertListe;// Zeile 44
    

    ergibt diesen Fehler

    g++ -c -Wall einzelbefund.cc
    einzelbefund.cc:44: type/value mismatch at argument 1 in template parameter list for template <class \_Tp, class \_Alloc = class allocator<\_Tp1> > vector<\_Tp,_Alloc>' einzelbefund.cc:44: expected a type, gotNormalWert'
    einzelbefund.cc:44: template argument 1 is invalid
    einzelbefund.cc:44: template argument 2 is invalid
    einzelbefund.cc:44: ANSI C++ forbids declaration `normalWertListe' with no type



  • ^Hanns schrieb:

    Nun wird es ja immer schlimmer. ich habe KAiE Rat befolgt:

    struct tag_NormalWert {
    
    1. Wurde dir geraten, KaiE's Rat nicht zu befolgen
    2. Hast du ihn nicht befolgt, lies mal genauer.

    Was soll das eigentlich?



  • Stimmt Bashar, ich müsste lesen können. ( es hat eh nicht geklappt )

    Was es soll?

    ich möchte zusammenhängende Information in einem Vector speichern. Dazu habe ich die Infos in einer struct erklärt, und dann einen vector erklärt.
    Dieses geschieht in labor_utils.hh ( war bei der serten Anfrage anders: direkt im quellcode ).
    labor_utils.hh lautet:

    #ifndef ISNORMAL
    #define ISNORMAL
    int isNormal ( string cGemessen,string cNormaltext  );
    int AlterInTagen ( string datum_Alt, string datum_Neu ) ;
    
    struct normWert {
            string male  ;
            string alterInTagen;
            string normalWert;
            string validFrom ;
    };
    
    vector<normWert> normalWertListe;
    #endif
    

    mein Hauptprorgamm

    //....
    #include "labor_utils.hh"    //zeile 32
    //...
            if ( normalWertListe.size()   == 1 ) return ( normalWertListe.normalWert);   // zeile 136
    

    ergibt jetzt den Fehler:

    g++ -c -Wall einzelbefund.cc
    einzelbefund.cc: In function `class string getNormalWert(basic_string<char,string_char_traits<char>,__default_alloc_template<true,0> >, basic_string<char,string_char_traits<char>,__default_alloc_template<true,0> >, basic_string<char,string_char_traits<char>,__default_alloc_template<true,0> >, int)':
    einzelbefund.cc:136: `class vector<normWert,allocator<normWert> >' has no member named `normalWert'
    

    ich habe zwei weitere structs mit vector benutzt, un dort klappt es.
    Nachdem ich diese strucht eingabut habe, kommt die Fehlermeldung.
    Und ich sehe beim besten wiullen nicht, woran es liegen könnte

    Hanns



  • ^Hanns schrieb:

    if ( normalWertListe.size()   == 1 ) return ( normalWertListe.normalWert);   // zeile 136
    

    Ha! Da haben wir's doch: 'normalWertListe.normalWert'. Du versuchst, den Vektor als Struct zu behandeln. Das klappt natürlich nicht. Da size() an der Stelle gleich 1 sein soll, mußt du wohl 'normalWertListe[0].normalWert' meinen.



  • 2 vorschläge :

    #ifndef ISNORMAL 
    #define ISNORMAL 
    int isNormal ( string cGemessen,string cNormaltext  ); 
    int AlterInTagen ( string datum_Alt, string datum_Neu ) ;
    struct normWert {
             string male  ;
             string alterInTagen;
             string normalWert;
             string validFrom ;
     };
    
    vector<struct normWert> normalWertListe; 
    #endif
    
    #ifndef ISNORMAL 
    #define ISNORMAL 
    int isNormal ( string cGemessen,string cNormaltext  ); 
    int AlterInTagen ( string datum_Alt, string datum_Neu ) ;
    typedef struct normWert {
             string male  ;
             string alterInTagen;
             string normalWert;
             string validFrom ;
     }NormWert;
    
    vector<NormWert> normalWertListe; 
    #endif
    


  • DStefan schrieb:

    .., aber könntest du irgendwo statt "normalWertListe[anzahl].normalWert" nur "normalWertListe.normalWert" geschrieben haben?

    Stefan (ehemals StefanD).

    Ich war blind 😃 Das wars
    danke Stefan

    Hanns


Anmelden zum Antworten