[Résolu] init dans un switch

ancrouancrou Membre
avril 2008 modifié dans API AppKit #1
Bonjour,

Je voudrais faire une allocation et instentation d'une classe dans un switch. Mais ça bug:

if(!lenghClasse==0x0000){<br />&nbsp; &nbsp; switch(idClasse){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case 0x0000:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br />				<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case 0x0001:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Classe *maClasse = [[[Classe alloc] initWithId:idClasse :lenghClasse]autorelease];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[listeClasse addObject:maClasse];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br /><br />&nbsp; &nbsp; &nbsp;default:<br />&nbsp; &nbsp; &nbsp; &nbsp; [self logError:[NSString stringWithFormat:@&quot;Classe inconnu: %d&quot;, idClasse]];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br />&nbsp; &nbsp; }//fin switch<br />}//fin if



L'erreur est :
Main.m:1065: error: parse error before '*' token
Main.m:1066: error: 'maClasse' undeclared (first use in this function)


Alors pourquoi ?
Et comment faire ?

Réponses

  • Philippe49Philippe49 Membre
    15:03 modifié #2
    Une déclaration dans un switch()  case : nécessite la présence d'accolades

    switch(  ) {
      case 0:
        {        // avec déclarations besoin d'accolade
          int N;
          ...
        }
      case 1:
          ....  // sans déclarations pas besoin d'accolade
  • NseaProtectorNseaProtector Membre
    15:03 modifié #3
    Encore une bonne réponse signé Philippe49,  décidément, je serais célibataire ...  :o
  • ancrouancrou Membre
    15:03 modifié #4
    dans 1208533891:

    Une déclaration dans un switch()  case : nécessite la présence d'accolades


    ça vient bien de là .
    Merci 

    Il doit certainement y avoir une raison historique ou autre mais l'essentielle c'est de savoir qui faut les accolades
  • schlumschlum Membre
    15:03 modifié #5
    Oui, enfin ça n'a rien d'historique, c'est syntaxique  :P
    Dans un branchement, pas d'allocation à  moins de définir un scoping...
Connectez-vous ou Inscrivez-vous pour répondre.