J'ai le code suivant qui est utilisé pour trouver la cible la plus faible d'un vecteur qui est un vecteur contenant un pointeur vers toutes les unités actives. J'essaye de créer un itérateur qui passera par chaque unité et passera à une autre fonction appelée can_attack (unité & u, Unité & v) qui prend deux unités et mesure si elles sont assez proches l'une de l'autre pour attaquer.Passage de l'itérateur dans la fonction
Lors de la compilation j'obtiens l'erreur suivante "erreur: la référence au type 'const unit' n'a pas pu se lier à une lvalue de type 'Unit * const'". Je comprends que je passe dans le mauvais type de variable, mais je ne sais pas comment transformer l'itérateur en une unité const. Merci pour toute aide
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);
}
}
}
}
Vous pourriez vouloir 'can_attack (u, * (* it))'. – songyuanyao
Une solution aussi simple. Je vous remercie. Une autre question rapide .. ma boucle for génère une erreur que le résultat d'expression est inutilisé .. Pourquoi serait-ce? le résultat de l'expression n'est-il pas utilisé dans la boucle for? – spaceinvaders101
Qu'est-ce que * expression result *? Quelle partie est-ce dans le code que vous avez montré? – songyuanyao