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;
}
}
さて、このコードは適切にコンパイルされ、特定の警告はありません。しかし、次のように「elem」の宣言と初期化を「for」ステートメント内に入れると:
for( int i = 0 , command* elem = &cmd_table[ 0 ] ; cmd_table[ i ].function != nullptr ; i++, elem = &cmd_table[ i ] )
g++ 4.7.2 は、このコードを次のエラーでコンパイルしません。
game.cpp:834:27: エラー: ' ' トークンの前にイニシャライザが必要です game.cpp:834:27: エラー: ';' が必要です ' ' トークンの前
理由はわかりません。誰かがここで問題を理解するのを手伝ってくれますか?
ありがとう