在此范围内未声明的声明中声明的指示符

时间:2018-04-23 15:46:30

标签: c++

我是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;
        }
    }


 }

}

1 个答案:

答案 0 :(得分:2)

问题是你的函数有一个名为soldier的参数;该参数的名称然后在范围内(即函数内部)隐藏类soldier的名称。有两种可能的解决方案:

  1. 理智的:重命名参数(或类)
  2. 备选方案:当参数在范围内时,使用class soldier代替solider来引用类型。