erreur: commutateur de la quantité et non un entier

J'ai recherché ma question sur StackOverflow et multi-liens google, et je suis encore confus. J'ai pensé que la meilleure chose pour moi est de demander...

Im la création d'une simple ligne de commande de la calculatrice. Voici mon code pour l'instant:

const std::string Calculator::SIN("sin");  
const std::string Calculator::COS("cos");  
const std::string Calculator::TAN("tan");  
const std::string Calculator::LOG( "log" );  
const std::string Calculator::LOG10( "log10" );

void Calculator::set_command( std::string cmd ) {

    for(unsigned i = 0; i < cmd.length(); i++)
    {
    cmd[i] = tolower(cmd[i]);
    }

    command = cmd;
}

bool Calculator::is_legal_command() const {

    switch(command)
    {
    case TAN:
    case SIN:
    case COS:
    case LOG:
    case LOG10:
        return true;
        break;
    default:
        return false;
        break;
    }

}

l'erreur que j'obtiens est:

Calculator.cpp: In member function 'bool Calculator::is_trig_command() const':  
Calculator.cpp: error: switch quantity not an integer  
Calculator.cpp: error: 'Calculator::TAN' cannot appear in a constant-expression  
Calculator.cpp: error: 'Calculator::SIN' cannot appear in a constant-expression  
Calculator.cpp: error: 'Calculator::COS' cannot appear in a constant-expression  

Le puissant internet, il dit que les chaînes de caractères sont autorisés à être utilisés dans les instructions switch.

Merci à tous, je vous remercie de votre aide.

  • Vous ne pouvez pas basculer sur un string en C++. stackoverflow.com/questions/650162/...
  • "Le puissant internet, il dit que les chaînes de caractères sont autorisés à être utilisés dans les instructions switch." Où?
  • Le puissant internet peut dire que "les chaînes sont autorisées à être utilisées dans les instructions switch...en C#", mais jamais en C++.
  • Mon erreur... majeure de l'échec de ma part. J'ai confondu avec C#...
InformationsquelleAutor Ken | 2010-12-26