Dubbio costruttore!!!!

di Anonimizzato10006 il
1 risposte
Ciao a tutti,
leggendo un manuale sul c++ mi e sorto un dubbio sulle chiamate ad un costruttore...mi spiego meglio...ho capito che non si possono creare oggetti dentro le istruzioni condizionali in modo che non si possa evitare l'inizializzazione pero leggendo questo codice:

class X{
  public:
    X();
};

X::X(){
}

void f(int i){
  switch(i){
    case 1:
      X x2; // Costruttore richiamato qui
      break;
    case 2 : // Errore: case elude l’inizializzazione
      X x3; // Costruttore richiamato qui
      break;
  }
}
come mai, il compilatore mi segna l'errore in X x3?...cioe non dovrebbe prima avvisarmi del problema in X x2?

1 Risposte

  • Ciao, l'errore esce parché non hai messo le parentesi graffe nei 'case n' , dovrebbe essere infatti così:
    
    void f(int i){
        switch(i){
            case 1:{  //aggiunta la parentesi graffa
                X x2; //
                break;
            }case 2 :{  //anche qui
                X x3; //
                break;
            }default: break;
        }
    }
    
    Penso che sia dovuto dal compilatore, dato che non è possibile dichiarare variabili nei 'case n' senza aver messo le parentesi graffe.
Devi accedere o registrarti per scrivere nel forum
1 risposte