我不太确定如何正确正确地表达问题,但是我已经声明了两个向量
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 *”。 我可以访问敌人和效果的大小,只是访问出现问题的方法
答案 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';
因此,在使用向量的情况下请务必使用参考