Partage
  • Partager sur Facebook
  • Partager sur Twitter

switch et expressions

    29 mars 2008 à 13:00:43

    Salut à tous!
    Voici le code :

    1. switch(iNouvelleCase) {
    2.     case (iCaseActuelle-1):
    3.     ouvrirPorte(iNouvelleCase, PORTE_DROITE);
    4.     break;
    5.     case (iCaseActuelle-m):
    6.     ouvrirPorte(iNouvelleCase, PORTE_BAS);
    7.     break;
    8.     case (iCaseActuelle+1):
    9.     ouvrirPorte(iCaseActuelle, PORTE_DROITE);
    10.     break;
    11.     case (iCaseActuelle+m):
    12.     ouvrirPorte(iCaseActuelle, PORTE_BAS);
    13.     break;
    14. }


    et voici le problème : erreur retournée par le compilateur
    error: `iCaseActuelle' cannot appear in a constant-expression

    est-ce que cela signifie que je ne peux mettre qu'une valeur simple ou une variable dans un switch? Si oui, c'est embetant :/

    merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      29 mars 2008 à 13:16:46

      Il faut que la valeur dans un switch soit une expression constante assimilable à un int (donc un int, un chat ou un enum le plus souvent).

      Je soupçonne que chez toi, iNouvelleCase n'est pas constant.
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        29 mars 2008 à 13:50:29

        C'est le contraire. C'est l'expression du case qui doit être constante.
        • Partager sur Facebook
        • Partager sur Twitter
        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
          29 mars 2008 à 14:02:10

          Wow, faut que j'arrete de répondre trop vite. Je me suis embrouillé dans ma réponse.

          C'est en effet l'expresion du case qui doit être constante.
          • Partager sur Facebook
          • Partager sur Twitter
          Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
            29 mars 2008 à 20:47:41

            En effet, un switch, en C/C++, ne fonctionne qu'avec des constantes entières (int, short, long, char). Tu devras donc avoir recours, ici, à une série de if/else.
            • Partager sur Facebook
            • Partager sur Twitter

            switch et expressions

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown