Dubbio costruttore!!!!

di il
1 risposte

Dubbio costruttore!!!!

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

  • Re: Dubbio costruttore!!!!

    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