Prob mit Meldung
-
!Case bypasses initialization of al local variable
Könnt ihr mir sagen was er damit meint?
-
Revils schrieb:
!Case bypasses initialization of al local variable
Ein case überspringt die initialisierung einer lokalen variablen
-
Man muss den Block einklammern, wenn man Variablen nach einer case-Marke deklariert:
case 0: { int num = 0; break; }
-
Ey Leute...danke euch. Perfekt. Hat geklappt.
-
Wenn du unbedingt lokale Variablen innerhalb von
switchmöchtest, rät es sich, neue Blöcke zu erzeugen. Vergiss dasbreakaber dennoch nicht. Zum Beispiel so, Formatierung ist ja egal:switch (Var) { case 1: { double d = 32.5476; d *= 54.7632 } break; case 2: { double d = 21.12; } break; }Allerdings solltest du überlegen, ob sich bei lokalen Deklarationen nicht die Auslagerung in eine separate Funktion lohnt. Oft - nicht immer - gehen mit neuen Variablen auch einige Anweisungen einher, die den Code schnell aufblähen und die Funktion lang und unübersichtlich machen. Bei
switchselbst kann man sich überlegen, ob nicht Alternativen wiestd::mapangebracht sind.
-
Für was steht das std::map? Ich muss sagen, ich habe noch nie mit map's gearbeitet.
-
std::map ist ein Klassen Template: http://www.cplusplus.com/reference/stl/map/
Edit: typo korrigiert
-
std ist ein namespace, map eine klasse.
-
Naja, statt
std::string Name; int Var = ...; switch (Var) { case 3: Name = "der dritte"; break; case 17: Name = "Nummer Siebzehn"; break; case 42: Name = "Die Antwort persönlich"; break; }hast du dann sowas:
std::map<int, std::string> Map; Map[3] = "der dritte"; Map[17] = "Nummer Siebzehn"; Map[42] = "Die Antwort persönlich"; int Var = ...; std::string Name = Map[Var]; // Vorsicht, evtl. Eintrag hinzugefügt -> je nachdem find() besserVorteil ist, dass du nicht auf integrale Konstanten als Key-Typen beschränkt bist, sondern irgendwas verwenden kannst.