我是c ++的初学者,我对指针的理解并不多。 以下代码中存在错误。士兵是我课程中的一个班级。该错误表明'targetsoldier未在此范围内声明'。
void level::battle(soldier *soldier, int targetx, int targety)
{
int x, y;
int enemyarmy;
soldier->getposition(x, y);
soldier *targetsoldier = getsoldier(targetx, targety);//THE ERROR OCCURS IN
THIS LINE
if(targetsoldier == nullptr){
return;
}
enemyarmy = targetsoldier->getarmy();
if(enemyarmy == soldier->getarmy()){
return;
}
int result = targetsoldier->takedamage(soldier->attack());
if(result ==1){
for(int h=0; h < _armies[enemyarmy].size(); h++){
if(_armies[enemyarmy][h] == targetsoldier) {
_armies[enemyarmy][h] = _armies[enemyarmy].back();
_armies[enemyarmy].pop_back();
delete *targetsoldier;
settile(targetx, targety, ' ', nullptr);
break;
}
}
}
}
答案 0 :(得分:2)
问题是你的函数有一个名为soldier
的参数;该参数的名称然后在范围内(即函数内部)隐藏类soldier
的名称。有两种可能的解决方案:
class soldier
代替solider
来引用类型。