Il y a quelque chose que je ne comprends pas à propos de la déclaration for, dans le morceau de code suivant s'il vous plaît se concentrer sur le ??? commenter:Doutes sur le fonctionnement de l'instruction 'for'
void user_interface::execute_a_command(const string& cmd, command cmd_table[])
{
LOG("user_interface::execute_a_command(): Executing \"",cmd,"\"");
bool command_executed = false;
//Exist any operation for this command?
command* elem = &cmd_table[ 0 ]; //???
for(int i = 0 ; cmd_table[ i ].function != nullptr ; i++, elem = &cmd_table[ i ])
{
if(cmd == elem->name)
{
//Call the function
(this->*(elem->function))();
command_executed = true;
break;
}
}
Eh bien, ce code compile bien et sans avertissements spécifiques. Mais si je mets la déclaration et l'initialisation de « élém » à l'intérieur du « pour » déclaration comme suit:
for(int i = 0 , command* elem = &cmd_table[ 0 ] ; cmd_table[ i ].function != nullptr ; i++, elem = &cmd_table[ i ])
g ++ 4.7.2 ne compile pas ce code avec cette erreur:
game.cpp: 834 : 27: erreur: initialiseur attendu avant '' jeton game.cpp: 834: 27: erreur: attendu ';' avant '' jeton
Je ne comprends pas pourquoi. Quelqu'un peut-il m'aider à comprendre le problème ici?
Merci
Cela ne s'applique pas seulement aux boucles for- –
@AndreasBrinck: J'ai pensé que cela serait évident à partir de l'exemple, mais je l'ai étendu pour être sûr. – user7116