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:
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:
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:
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 :aie:
Je ne comprends pas pourquoi ca fait ca, alors si vous avez une idee, je prends !
Merci ;)