struct-Mitglieder werden nicht erkannt
-
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 fortemplate <class \_Tp, class \_Alloc = class allocator<\_Tp1> > vector<\_Tp,_Alloc>' einzelbefund.cc:44: expected a type, got
NormalWert'
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 {
- Wurde dir geraten, KaiE's Rat nicht zu befolgen
- 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önnteHanns
-
^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 StefanHanns