constante (statische) String struct's in classen
-
jo hi,
warum kann man keine statischen structs voll mit string'S in klassen packen??
á la:struct teststrucktur { string eins; string zwei; }; class weisnicht { privat: struct teststrucktur huhu[]= { {"lala","lulu"}, {"haha","huhu"} }; ...??
gut habe es erstmal global gemacht weils so net ging, aber wieso??
danke der zeusi
-
Wie willst Du denn den String ansprechen ?
Per [] ? Dann wärs aber ein Array....
-
jo n array ausm struct (mit zwei strings),
wieso kann ich kein statischen struct in eine class packen?
(habe schon a bissl rumprobt:
teststrucktur huhu[]= { {"lala","lulu"}, {"haha","huhu"} }; ... oder: teststrucktur huhu[2]= { {"lala","lulu"}, {"haha","huhu"} }; ... oder: struct teststrucktur huhu[2]= { {"lala","lulu"}, {"haha","huhu"} };funzt auch net.. compiler meckert rum das das net geht
ISO C++ forbids initialization of member `huhu'
immer das selbe...
-
Abgesehen davon das die struct nich statisch ist, was ist Dein Ziel ?
lulu durch lala zu identifizieren ? (std::map ?)
Ich kann mit der Syntax die Du postest nix anfangen.
-
nö,. das ist exemplarisch,...
ich brauche ein paar daten die sich, hier in dem fall "eins","zwei", über n array rauslesen möchte, "eins","zwei" sind strings, die daten die ich da reinpacke statisch, oder besser gesagt constant, diese sollen in der classe dynamisch verarbeitet werden, is ja nur teil der classe...
á la
class weisnicht { ... public: string weisnicht::haterdat(int zahl, bool sche, string lala) { .... if(sche) {string ret=huhu[zahl].eins; ret+=" "; ret+=lala;} ....} ... };zum bleistift...
-
Deutlicher wirds dennoch nicht.
huhu[zahl] erreichst Du schon mal mit std::vectorstd::string .
Wenn Du pro Element 2 String brauchst, erreichst Du das mit
std::vector<std::pairstd::string,std::string >Ansonsten wirst Du ein 2 Dimensionales Array mit char Zeichen anlegen müssen. (Ich hab die Syntax dazu grad nicht parat, zu viel ADO.Net grad im Kopf).
-
hm jo ich weiß,..
meine frage aber war: warum geht dat nicht??
thx
-
Warum kann der Himmel nicht grün sein ?
-
ganz einfach - member können nur in konstruktoren initialisiert werden, nicht jedoch in der klassendefinition
versuch mal einen static-member
-
Du kannst noch nicht mal eine einzelne Variable vom Typ "teststruktur" anlegen, d.h.
teststruktur var = { "xx", "yy" };wird vom Compiler mit einem Fehler bestraft.
Entweder du spendierst der Struktur einen passenden Konstruktor oder aber du verwendest anstatt "string" besser gleich "const char * const" (vorausgesetzt diese Strings sind wirklich zur gesamten Laufzeit konstant!).
-
ahhhhh,.... also doch "nur" durch den konstruktor,.., ist aber bei der größe ein bissl unübersichtlich,..
static funzt leider auch nicht, danke für eure erklärung
ein gutes jahr euch allen
thx