Komischer Fehler bei switch
-
Hoi
Ich habe folgende Situation
string s1; switch(s1) { case "a":; break; default:; }Jetzt bekomme ich immer folgende Fehler
switch-Ausdruck des Typs 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' nicht erlaubt Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werdenDa muss doch irgendetwas falsch sein, weil seit wann darf man, keine strings als switch Argumente angeben.
-
Das durfte man noch nie.
-
du darfst zeichen angeben
'a'
dann gehts
-
Hallo
dann mus aber auch ein char-Typ für die switch-Bedingung genmmen werden.
bis bald
akari
-
jop, strings darf man bei switch nicht benutzen, aber deinem case zufolge willste
ja vlt nur einzelne zeichen vergleichen?
also so:char s1; switch (s1) { case 'a': //mach was break; default: //mach was }
-
Storm.Xapek.de schrieb:
du darfst zeichen angeben
'a'
dann gehts
Nö, switch darf nur für ints und chars benutzt werden (wegen Sprungtabelle). Der übergebene string s1 ist keine Zahl.
MfG
GPC
-
Ahh, danke
Eine andere Frage habe ich aber noch.
In welcher Reihenfolge werden einer Funktion die Argumente übergeben?
function(var1,var2,var3);wird zuerst var1 oder var3 übergeben??
und gilt das gleiche wenn man Funktionen als Argumente hat?
function(func1(),func2(),func3());
-
wenn du meinst ob bei
meineFunktion(f1(), f2(), f3());zuerst f1, f2 oder f3 aufgerufen werden: das darf der Compiler AFAIK machen wie er will
-
Blue-Tiger schrieb:
wenn du meinst ob bei
meineFunktion(f1(), f2(), f3());zuerst f1, f2 oder f3 aufgerufen werden: das darf der Compiler AFAIK machen wie er will
Korrekt. Der Compiler muss nur sicherstellen, dass f1, f2 und f3 aufgerufen wurden, bevor meineFunktion aufgerufen wird. In welcher Reihenfolge f1-f3 aufgerufen werden wird vom Standard aber nicht festgelegt. Jede beliebige Reihenfolge ist denkbar inklusive einer Parallelausführung.