c++ - respectiva - la inicialización de ''elemento'' se omite por la etiqueta ''caso''
etiquetas que no tienen cierre (2)
Cuando se declara una variable en un case
, el próximo case
está técnicamente todavía en el mismo ámbito, por lo que podría consultarlo allí, pero si acierta ese case
sin tocarlo primero, terminaría llamando a una variable no inicializada. Este error impide eso.
Todo lo que necesita hacer es definirlo antes de la instrucción switch
o usar llaves { }
para asegurarse de que salga del alcance antes de salir de un case
específico.
Esta pregunta ya tiene una respuesta aquí:
No entiendo por qué estoy recibiendo el error:
la inicialización de ''elemento'' se omite por la etiqueta ''caso''.
¿Puede alguien por favor explicarme?
void LinkedList::process_example(int choice) {
switch(choice) {
case 1:
cout << endl << endl << "Current S = ";
this->printSet();
cout << "Enter an element :";
char* element = "lol";
//cin>>element;
cin.clear();
cin.ignore(200, ''/n'');
this->Addelementfromback(element); //error is here
cout << endl << endl << "Current S = ";
this->printSet();
break;
case 2:
this->check_element();
break;
case 3:
cout << endl << endl;
cout << "Current Set S = ";
this->printSet();
cout << endl << "S has ";
int count = this ->check_cardinality();
cout << count << " elements";
break;
}
}
Pruebe wrap- case
con {}
, y coloque toda su declaración dentro de {}
.
case 1:
{
cout << endl << endl << "Current S = ";
this->printSet();
// and other mess
}
break;
Debería poner todas estas declaraciones en funciones, mantener clara la declaración de case
. Por ejemplo, escribe este estilo:
case 1:
initializeElement();
break;
case 2:
doSomethingElse();
break;
Ver enlace