-1
다음 코드는 모든 활성 유닛에 대한 포인터를 포함하는 벡터 인 벡터에서 가장 약한 타겟을 찾는 데 사용됩니다. 각 유닛을 통과하여 can_attack (유닛 & u, 유닛 &v)이라는 다른 함수에 전달하는 이터레이터를 만들려고합니다.이 유닛은 공격을하기에 충분히 근접해 있으면 두 유닛과 대책을 취합니다.이터레이터를 함수에 넣기
컴파일시 다음 오류가 발생합니다. "오류 유형 : 'const Unit'유형이 'Unit * const'유형의 lvalue에 바인드 할 수 없습니다. 나는 틀린 타입의 변수를 전달하고 있지만 iterator를 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);
}
}
}
}
'can_attack (u, * (* it))'을 원할 수도 있습니다. – songyuanyao
그런 간단한 해결책. 고맙습니다. 하나의 다른 빠른 질문 .. 내 for 루프는 표현식 결과가 사용되지 않는다는 오류를 생성합니다. 왜 그렇게 될까요? for 루프에서 사용되지 않은 표현식 결과입니까? – spaceinvaders101
* 표현식 결과 * 란 무엇입니까? 당신이 보여준 코드에 어떤 부분이 있습니까? – songyuanyao