IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

constructeur sous la boucle switch


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut constructeur sous la boucle switch
    bonsoir,
    je suis débutant en C++. le prof de cours nous a demandé de réaliser une application console qui est un simulateur de distributeur bancaire.
    je me retrouve face à ce problème:

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	switch (type)
    		{
    			case 'V':
    				carte1 C;
    				break;
    			case 'P':
    				carte2 C;
    				break;
    			case 'E':
    				carte3 C;
    				break;
    		}


    le compilateur me dit que "initialization of 'C' is skipped by 'case' label"

    comment faire??
    merci d'avance

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Quand tu fais
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    case 'V':
       {
          carte1 C;
          break;
       }
    tu déclares un objet C de type carte1 qui va, en théorie, vivre jusqu'au break et pas plus loin.
    En fait il faudrait que les classes carte1, carte2 et carte3 aient un ancêtre commun, par exemple une classe carte.
    Ensuite tu peut faire ceci :
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    carte C;
    switch(type)
    {
      case 'V': {
        C = new carte1();
        break;
      }
      etc..
    }
    (ou un truc du genre)

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Salut pour ne plus avoir l'erreur il faut juste rajouter des scope {} pour chaque case

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    switch (type)
    {
      case 'V':
      {
        carte1 C;
        break;
      }
      case 'P':
      {
        carte2 C;
        break;
      }
      case 'E':
      {
        carte3 C;
        break;
      }
    }

    Maintenant smyley a raison de dire qu'il faut que tu passes par un new pour que ton objet existe après la fin du case.

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par smyley
    Ensuite tu peut faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    carte C;
    switch(type)
    {
      case 'V': {
        C = new carte1();
        break;
      }
      etc..
    }
    Tu veux dire ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    carte *C;
    switch(type)
    {
      case 'V': {
        C = new carte1();
        break;
      }
      etc..

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Tu veux dire ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    carte *C;
    switch(type)
    {
      case 'V': {
        C = new carte1();
        break;
      }
      etc..
    yes

Discussions similaires

  1. probleme boucle switch sous fedora 18
    Par hannibal007 dans le forum Débuter
    Réponses: 1
    Dernier message: 23/03/2013, 00h35
  2. [HOWTO] Sous-programmes + boucles
    Par I'm_HERE dans le forum Vos contributions
    Réponses: 8
    Dernier message: 18/03/2009, 22h45
  3. boucle switch liens
    Par luciedoudou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/08/2008, 08h32
  4. Problème de boucle Switch Case
    Par mLk92 dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2007, 18h20
  5. Pb de constructeur sous VC++
    Par tazamorte dans le forum Visual C++
    Réponses: 2
    Dernier message: 30/08/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo