
C++: solucionar el error «crosses initialization of» en switch/case
17/12/2010Explicación ampliada (2026): el error suele aparecer cuando un salto entre etiquetas case puede omitir la inicialización de una variable declarada en el mismo ámbito. La solución habitual consiste en delimitar cada caso que declara variables mediante llaves.
switch (opcion) {
case 1: {
int valor = 1;
std::cout << valor << '\n';
break;
}
default:
break;
}
El ejemplo original que aparece abajo contiene una errata en la palabra switch y simplifica el problema; se conserva como referencia histórica.
Al producirse el siguiente error de compilación en c++:
error: crosses initialization of
frecuentamente producido en una sentencia «switch case», es solucionable mediante la inclusión entre llaves ( {} ) del bloque de código.
swtich (opcion)
case 1: {
cout << "hola" << endl;
break;
}
Otros artículos relacionados: Renombrar columnas en SQLite
muchas gracias primera pagina que visito y me dan la solucion de una, muchas gracias
Perfecto pero porque ocurre?
Normalmente ocurre cuando se declaran variables u objetos dentro de un case, al añadir los brackets se delimita el uso de esa variable al interior de ese case. De otro modo la variable seguiría activa al ejecutarse el break() y terminar el case que la contiene.
[…] pero no encontré el problema por lo que entendí que el asunto tenia que venir por otro lado. En este post explican que es lo que pasa. La idea es que si declaro algo dentro de un switch tengo que usar […]
Frankly I think that’s abultsleoy good stuff.
[…] Otros artículos relacionados: Solucionar errores de C++ […]