Ebomike der Post hat die Antwort der Fehler loszuwerden. Nun, der Grund ist,
Von Standard-docs 6.7.3,
Es ist möglich, in einen Block zu übertragen, aber nicht in einer Weise, die Erklärungen mit der Initialisierung umgeht. Ein Programm, das springt77) von einem Punkt, wo eine lokale Variable mit automatischer Speicherdauer nicht in einem Bereich ist, in Bereich ist schlecht gebildet, wenn die Variable Trivial-Typ (3.9) hat und ohne ein deklariert wird Initialisierer (8.5).
Ein Beispiel aus den Standard-Dokumenten selbst,
void f()
{
// ...
goto lx; // ill-formed: jump into scope of a
// ...
ly:
X a = 1;
// ...
lx:
goto ly; // OK, jump implies destructor
// call for a followed by construction
// again immediately following label ly
}
, in dem die Aussage goto lx;
schlecht ausgebildet ist, weil es auf die Erklärung lx
gesprungen wird, wo der Umfang der a
sichtbar ist. Auch
,
77) Der Übergang von der Bedingung einer switch-Anweisung auf einen Fall Etikett wird ein Sprung in dieser Hinsicht betrachtet.
Das gilt also auch für switch
.
Und wenn geschweifte Klammern {}
in sie eingefügt werden, ist der Bereich auf die geschweifte Klammern beschränkt und Sie können innerhalb jeder case
Erklärung deklarieren.
Hoffnung, das hilft ..
willkommen Überlauf zu stapeln ... bitte auf die „Code“ Formatierung Schaltfläche in der Symbolleiste verwenden (es sieht wie folgt aus: 101010") Code in der Zukunft zu formatieren –
verwendet.: http://stackoverflow.com/questions/2351936/create-an-object-in-switch-case http://stackoverflow.com/questions/449736/why-cant-variables-be-declared-in-a-switch -statement http://stackoverflow.com/questions/1231198/declaring-variables-inside-a-switch-statement http://stackoverflow.com/questions/2036819/compile-error-with-switch-expected-expression-before http://stackoverflow.com/questions/1115304/can-i-declare-variables-inside-an-objective-c-switch-statement http: // stackoverflow.com/questions/4068909/odd-compiler-error-wenn-benutze-obj-c-objekte-in-ein-switch-statement –