struct-Mitglieder werden nicht erkannt
-
guten abend, ich hoffe, daß richtige Forum erwischt zu haben:
wenn ich (unter linux) die Datei einzelbefund.cc mit make erstellen möchte kommt diese Fehlermeldung
*einzelbefund.cc:145: `class vector<NormalWert,allocator<NormalWert> >' has no member named `normalWert'
*Auszug aus einzelbefund.cc
struct NormalWert { string male ; string alterInTagen; string validFrom ; string normalWert; }; vector<NormalWert> normalWertListe; //.. mehr code... if( ! suchDatum.empty() && ( suchDatum == normale.getString("VALID_FROM") )) { normalWertListe.resize ( ++anzahl); normalWertListe[anzahl].male = normale.getString("MALE"); normalWertListe[anzahl].alterInTagen = normale.getString("ALTER_TAGE"); normalWertListe[anzahl].validFrom = normale.getString("VALID_FROM"); normalWertListe[anzahl].normalWert = normale.getString("NORMALWERT"); }
Sieht jemand meinen Fehler?
Danke Hanns
-
Hi,
solche Fehler hatte ich auch schonmal (allerdings unter Windows).
Fehler finde ich in deinem Code keine.Bei mir hat es oft daran gelegen, dass irgendwo im Code ueber der betreffenden
Zeile ein Semikolon gefehlt hat.Ansonsten kann ich dir auch nicht weiterhelfen, sorry
Schau dir einfach nochmal den Code darueber an
mfg
v R
-
DA mein Quelltext recht groß ist..
Könnte es sein, daß der Compiler die Fühler streckt, und das irgendwie nicht mitrbekommt ?Ich hab auch schon versucht, die Reiehenfolge in der Struktur zu ändern. Der gleiche Fehler ??
Hanns
-
Hi,
wenn ich nich recht erinnere liegt der Fehler hier:
Du schreibst:
struct NormalWert { string male ; string alterInTagen; string validFrom ; string normalWert; }; // Keine Member deklariert
Verdsuche es doch einmal so:
typedef struct tag_NormalWert { string male ; string alterInTagen; string validFrom ; string normalWert; } NormalWert;
und so bekommst du ein Member des Structs
NormalWert VarNormalWert; // Member des structs
MFG
KaiEDIT: Kleinen Fehler vom Amt beseitigt
-
und so bekommst du ein Member des Structs
NormalWert VarNormalWert;Ahja, nennt man das neuerdings schon 'Member' ?
-
@ 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 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