C++报错:error C2601: 'stu_del' : local function definitions are illegal

void stu_del()
{

int i = 0;    
char sign = 'y'; 
string num;    
while (sign != 'n' && sign != 'N')
{                  {
    cout << " ---------数据删除-----------\n";
    cout << "请输入学号\n";
    cin >> num; 
    while (stu[i].getId() != num && i < n)
        i++;
    if (i == n)
    { 
        cout << "\t没有此!\n";
        return;
    }
    if (i != n)
    {

        cout << "是否确认删除?(y/n)";
        cin >> sign; 

        if (sign == 'y')
        { 
            for (int j = i; j < n; j++)
            {                         
                stu[j] = stu[j + 1]; 
            }
            n--; 
        }
}
    cout << "是否需要继续?(y/n)";
    cin >> sign; 
}

}

img

答案参考ChatGPT Plus版,整理汇总。希望能帮助你解决问题 在你提供的代码中,出现了两个问题导致报错:

  1. 多余的大括号:
    while (sign != 'n' && sign != 'N') 后面的大括号是多余的,应该将其删除,否则会导致后续的代码块被包含在这个多余的大括号中。

  2. 函数定义位置错误:
    错误提示中提到 "local function definitions are illegal",意思是在该位置定义函数是不合法的。根据你提供的代码,函数 stu_del() 的定义位置可能在其他函数或类的内部,导致这个错误。

为了修复这些问题,请按照以下步骤进行修改:

  1. 删除多余的大括号:
    while (sign != 'n' && sign != 'N') 后面的大括号删除。

  2. 将函数定义放置在适当的位置:
    确保函数 stu_del() 的定义在其他函数或类的外部,例如在主函数的上方或其他全局函数的下方。

修改后的代码应该如下所示:

void stu_del()
{
    int i = 0;
    char sign = 'y';
    string num;
    while (sign != 'n' && sign != 'N')
    {
        cout << "---------数据删除-----------\n";
        cout << "请输入学号\n";
        cin >> num;
        while (stu[i].getId() != num && i < n)
            i++;
        if (i == n)
        {
            cout << "\t没有此!\n";
            return;
        }
        if (i != n)
        {
            cout << "是否确认删除?(y/n)";
            cin >> sign;
            if (sign == 'y')
            {
                for (int j = i; j < n; j++)
                {
                    stu[j] = stu[j + 1];
                }
                n--;
            }
        }
        cout << "是否需要继续?(y/n)";
        cin >> sign;
    }
}

请根据以上修改建议进行代码的修正,如果还有其他问题,请随时提问。