2017-05-19 8 views
0

この質問は、古いもの(それは並べ替えられます)のコピーと貼り付けのように見えますが、状況ははるかに異なって非常に難しいですあなたが私の小さな名声を殺す前に私のことを聞いてください。引数としてオブジェクトのベクトルのポインタを渡すよりはるかに異なっています

私は、オブジェクトを関数パラメータに格納してスキャンし、特定のオブジェクトを別の関数のパラメータに入れて、その特定のオブジェクトのすべての値を使用することに問題があります。

class player{ 
public: 
int id; 
string name; 
}; 

class enemy{ 
public: 
int eid; 
string name; 
}; 

、独自のベクトルに保存されているこれらのクラスのいくつかのオブジェクトがありました:

player example; 
example.id = 1; 
example.name = "example"; 

enemy badEnemy; 
badEnemy.eid = 1; 
badEnemy.name = "badEnemy"; 

vector<player> allPlayers; 
vector<enemy> allEnemys; //I know the spellings wrong but am to reluctant to change it 
allPlayers.push_back(example); 
allEnemys.push_back(badEnemy); 

そして機能があったが、選手のクラスと敵クラスがあった場合例えば

int fightEnemy(player player, enemy enemy) { 
    cout << player.name << endl; 
    cout << enemy.name << endl; 
     return 0; 
    } 

それ以降は、オブジェクトの名前が表示されます。ベクトル内の特定のオブジェクトのためのナノ秒と私は私のメインの質問は、私は、ベクターを介して他の機能にスキャンオブジェクトを渡すんかだと思いfightEnemy機能

int enemyComboCheck(int id1, int id2, vector<Player>* allPlayers, vector<enemy>* allEnemys){ 
    int iteratorForPlayer = 0; 
    id1 -= 1; 
    id2 -= 1; 
    for(int i = 0; i < 18; ++i){ 
    if(id1 == allPayers[iteratorForPlayer].id && id2 == allEnemys[i].id) fightEnemy(allPlayers[iteratorForPlayer], allEnemys[i]); 
//how do I pass the scanned object into the other function 
     } 
     return 0; 
} 

に挿入しますか?他の関数でベクトルを使用する必要がありますか?

申し訳ありませんが、すべてのフォーマットが間違っていても、とにかく感謝します!

+1

なぜ18:これは、あなたがそれを呼び出す方法を変更しないのだろうか? – Donnie

+0

@Donnie私が問題を抱えていたプログラムのために、18人の敵と5人のプレーヤーがいました –

答えて

0

ifステートメントで参照しているのとまったく同じ方法で渡します。

fightEnemy(allPlayers[iteratorForPlayer], allEnemies[i]);

とスペルを修正。それがグローバルな検索と置き換えのためのものです。

fightEnemyの署名を変更して参照を取るようにして、オブジェクトをコピーする必要がないようにし、必要に応じてヒットポイントのようなものを変更することをお勧めします。ループ内

int fightEnemy(player &player, enemy &enemy)

+0

私はそれをすべて追加しましたが、何のエラーもありませんが、今問題はfightEnemyがコンソールに表示されないことです。 –

関連する問題