whileループで別の関数を呼び出してオブジェクトのベクトルを反復しようとすると、問題は発生します(必ずしもエラーはありませんが、コンソールは空白になります)。別の関数を使用してオブジェクトのベクトルで関数を呼び出す
基本的にfightEnemy
はwhileループで実行すると表示されませんが、enemyComboCheck
関数でwhileループで実行しないと表示されません。
マイコード:
int fightEnemy(Player &player, Enemy &enemy) {
//just for example
cout << player.name << endl;
cout << enemy.name << endl;
return 0;
}
int enemyComboCheck(int id1, int id2, vector<Player> &allPlayers, vector<Enemy> &allEnemies){
int iteratorForPlayer = 0;
int iteratorForEnemy = 0;
id1 = id1 - 1;
id2 = id2 - 1;
while(true){
if(id1 == allPlayers[iteratorForPlayer].id && id2 == allEnemies[iteratorForEnemy].eid) fightEnemy(allPlayers[iteratorForPlayer], allEnemies[iteratorForEnemy]); break;
if(iteratorForEnemy <= 18) iteratorForEnemy++;
if(iteratorForPlayer <= 5) iteratorForPlayer++;
}
return 0;
}
int main(){
vector<Player> allPlayers; //pretend this has 5 players
vector<Enemy> allEnemies; //pretend this has 18 enemies
enemyComboCheck(uid1, uid2, allPlayers, allEnemies); //this won't print out fightEnemy while in the while loop
return 0;
}
私はあなたの編集をロールバックしました。質問を変更し、現在の回答(これも私のものです)を無効にしたためです。サイトに適した別の質問がある場合は、別の質問としてそれを聞くことができます。しかし、デバッガでコードをステップ実行する必要があるように思えます。 –
デバッガの使い方がわかりません:/ –
'if'文が決して満たされない場合、ループは永遠に回転し続けます。あなたのループでは、 'id1、id2、allPlayers [iteratorForPlayer] .id、allEnemies [iteratorForEnemy] .id'の値を出力し、各繰り返しをループが入力を待つ(' cin.get() ')ようにすることができます値が何であるか参照してください。 –