我有以下代码用于从向量中找到最弱的目标,该向量是包含指向所有活动单位的指针的向量。我正在尝试创建一个迭代器,它将遍历每个单元并将其传递给另一个名为can_attack(Unit& u,Unit& v)的函数,该函数需要两个单位并测量它们是否足够接近以进行攻击。 / p>
在编译时我收到以下错误“错误:类型'const Unit'的引用无法绑定到'Unit * const'类型的左值”。我知道我传递了错误类型的变量但不确定如何将迭代器转换为const单元。谢谢你的帮助
void World::enemies_within_attack_range(const Unit &u,
vector<Unit*> &targets) const
{
targets.clear();
vector<Unit*>::const_iterator it=units.begin();
for(it;it!=units.end();it++){
if((*it)->team != u.team){
if(can_attack(u,(*it))){
targets.push_back(*it);
}
}
}
}
答案 0 :(得分:0)
问题在于can_attack调用和参数const Unit&amp; u。 这个电话必须按照songyuanyao提到的那样纠正:can_attack(你,*(* it))。 但这不是唯一的问题。 有三种选择:
选择权在你手中。