指针向量的访问指针方法

时间:2018-07-22 12:52:06

标签: c++ c++11

我不太确定如何正确正确地表达问题,但是我已经声明了两个向量

std::vector<enemy*> enemies;
std::vector<hit_area *> effects;

这些工作很好,但是我将它们传递给了一个函数

handleGame(strd_maps[0], &gcam, &mainchar, currentKeyStates, &enemies, &effects)

当我尝试访问成员或方法或敌人或效果时,该方法行之有效,但是在功能上

if(effects[d]->collide(enemies[i]->x, enemies[i]->y enemies[i]->w, enemies[i]->h))

我收到错误消息“->的基本操作数”具有非指针类型“ std :: vector *”。 我可以访问敌人和效果的大小,只是访问出现问题的方法

1 个答案:

答案 0 :(得分:0)

通常,您不传递向量的地址。相反,您传递了一个引用:

void func(std::vector<enemy*> &enemies) {
std::cout << enemies.size() << '\n';
std::cout << enemies[i]->x << '\n';
}

// Call it like:
func(enemies);

如果传递向量的地址,则需要使用一些古怪的语法,例如:

std::cout << enemies->operator[](i).x << '\n';

因此,在使用向量的情况下请务必使用参考