Essentiellement, mon boîtier de commutation ne fonctionne pas correctement car les instructions pour les conditions que je ne pense pas être remplies s'exécutent de toute façon.Commutateur "ne semble pas fonctionner" C++
entrée Exemple:
CerseiTyrion
Sortie prévue:
Cersei
Tyrion
sortie actuelle:
Cersei
Tyrion
Jon
Dany
Tyrion
Jon
Dany
L'objectif de la fonction suivante est d'analyser un texte d'entrée pour un jeu d'aventure et laissez le jeu connaître certaines des informations importantes contenues dans le texte. Il continue ensuite à utiliser ce qu'il trouve pour exécuter du code qui devrait toujours fonctionner avec le reste de la fonction si certaines conditions sont remplies.
Minimal, complet; exemple vérifiable:
void HandleGameState(const std::string& text) {
enum Characters {
Cersei = 0x01,
Tyrion = 0x02,
Jon = 0x04,
Dany = 0x08
};
unsigned int mask = 1;
switch(characterMask & mask)
{
case Cersei:
{
std::cout << "Cersei" << std::endl;
};
case Tyrion:
{
std::cout << "Tyrion" << std::endl;
};
case Jon:
{
std::cout << "Jon" << std::endl;
};
case Dany:
{
std::cout << "Dany" << std::endl;
};
}
}
Mettez simplement 'break' après la fin de chaque instruction de requête. – zindarod
Nous avons généralement une «pause» après chaque cas pour ne pas tomber au suivant. –
Prenez un 'break;' de GoT s'il vous plaît :) – ABcDexter