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 :

Probleme sur un switch case


Sujet :

C++

  1. #1
    Hew
    Hew est déconnecté
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 142
    Par défaut Probleme sur un switch case
    Bonjour,

    J'ai un probleme sur un switch case pour une option que je passe dans ma classe.

    Voici comment je definis ma classe :
    Code : 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
     
    template<typename T>
    class LumpyBkg : public BkgGen<T>
    {
    public:
    	enum LumpOption {uniform, gaussian};
    ..........
     
    	LumpyBkg(int3vector dim, int Nbar, float DC, float magnitude, float radius, LumpOption theLumpOption);
    	~LumpyBkg();
     
    ..........
            void addBackground();
     
     
    private:
    ..........
    	LumpOption _theLumpOption;
    };
    Ensuite ma fonction addBackground est comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    template<typename T>
    void LumpyBkg<T>::addBackground()
    {
    	switch (_theLumpOption)
    	{
    	case uniform:
    		cout << "I am adding uniform lumps now\n";
    		this->makeUniform();
            case gaussian:
    		cout << "I am adding gaussian lumps now\n";
    		this->makeGaussian();
    	}
    }
    Ensuite dans ma fonction main je construis mon objet comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LumpyBkg<double> test(dim,Nbar,DC,magnitude,radius,LumpyBkg<double>::gaussian);
    Et j'ai remarque les choses suivantes :
    -si je laisse mon switch case comme il est, si mon option est "uniform" alors les deux cas vont s'executer : uniform puis gaussian. Si mon option est "gaussian" seul le cas gaussian s'execute (c'est ce que je veux)
    - si je change l'ordre de mon switch case (gaussian avant uniform), il va se passer l'inverse : si j'appelle l'option "uniform", seul le cas uniform va s'executer, si j'appelle l'option "gaussian", les deux vont s'executer.

    Bizarre
    Je ne comprends pas pourquoi ca fait ca, alors si vous avez une idee, je prends !

    Merci

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    T'as jamais entendu parler de break Cours et Tutoriels C++ : Pour débuter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    template<typename T>
    void LumpyBkg<T>::addBackground()
    {
    	switch (_theLumpOption)
    	{
    	case uniform:
    		cout << "I am adding uniform lumps now\n";
    		this->makeUniform();
    		break;
            case gaussian:
    		cout << "I am adding gaussian lumps now\n";
    		this->makeGaussian();
    		break;
    	}
    }
    P.S. : on tend à éviter les noms de variable commençant par un souligné ('_') car ces schémas de noms sont réservés aux compilateurs.

  3. #3
    Hew
    Hew est déconnecté
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 142
    Par défaut
    Aaaaah "break" merci
    Maintenant que tu me le dis, ca me parait evident !

    Pour les noms de variables, dans du code ecrit par quelqu'un d'autre et que je regarde pour m'inspirer c'est comme ca que sont definis les attributs... je pensais que c'etait la norme du coup

    Merci

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 609
    Par défaut
    Juste pour info, la norme pour nommer les attribut est plus du style: m_toto ou mToto (avec m comme "Member).
    Et du coup (moins répandu mais ça se trouve quand même) g_toto/gToto pour les globales ou s_toto/sToto pour les static

  5. #5
    Hew
    Hew est déconnecté
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 142
    Par défaut
    Ok merci ! Je m'en souviendrai !

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par Hew Voir le message
    Aaaaah "break" merci
    Maintenant que tu me le dis, ca me parait evident !
    Oublier le break arrive même au meilleur.
    Mais quand ça déconne, il faut savoir tout de suite se poser la question : "Aurais-je oublié des break ??"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petit probleme sur un select case
    Par Nono Sto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/12/2012, 17h49
  2. [Système] Probleme avec un switch case!
    Par Death83 dans le forum Langage
    Réponses: 7
    Dernier message: 29/01/2006, 16h28
  3. exercice c probleme sur les switch
    Par john93 dans le forum C
    Réponses: 7
    Dernier message: 14/01/2006, 09h53
  4. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25
  5. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2005, 11h34

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