传递对象矢量的指针作为参数,但更多不同

时间:2017-05-19 05:49:40

标签: c++ function class object vector

这个问题看起来像是旧版本的复制和粘贴(它有点类似)但是我向你保证情况会有很多不同并且很难解释所以请在你谋杀我的微不足道的声誉之前先听我说

我遇到的问题是将对象保存到函数参数中,然后扫描它们并将特定对象放入另一个函数的参数中,然后使用该特定对象的所有值。

例如,如果有一个玩家类和敌人类:

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 个答案:

答案 0 :(得分:0)

您传递的方式与您在if声明中引用它们的方式完全相同。

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

修复拼写。这就是全球发现和替换的目的。

我建议更改fightEnemy的签名以获取引用,这样您就不必复制对象,并且如果需要,您可以更改命中点等内容。这不会改变你的称呼方式:

int fightEnemy(player &player, enemy &enemy)