h1

C++: solucionar el error «crosses initialization of» en switch/case

17/12/2010

Explicació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

6 comentarios

  1. Avatar de eduardo

    muchas gracias primera pagina que visito y me dan la solucion de una, muchas gracias


  2. Avatar de joselito

    Perfecto pero porque ocurre?


  3. Avatar de santygonzalez

    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.


  4. […] 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 […]


  5. Avatar de Nodin

    Frankly I think that’s abultsleoy good stuff.


  6. Avatar de Desconocido

    […] Otros artículos relacionados: Solucionar errores de C++ […]



Deja una respuesta

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.