C++建议使用圆括号将赋值用作真值

我的这部分代码有一些问题:

Employees.cpp:

void Employees::delete_employee()
{
    int employee_number;

    cout<<"
..."<<endl<<endl;
    cout<<"Give me the number:";
    cin>>Employee_number;

    for(std::vector<EmployeeStruct>::size_type i = 0; i != lista.size(); i++)
        {
            if (employee_number = lista[i].Employee_number)
            {
                lista.erase(lista.begin() + i);
            }
        }
    cout<<"..."<<endl<<endl;
    cout<<"--------------------------------"<<endl;

}

当我编译我的代码时,我看到一些类似的东西:警告:建议将用作真值的赋值括在圆括号中,但我真的不知道如何处理它。也许这不是一个严重的问题,但我的程序并不像我想的那样工作。(此代码应删除员工)

在main.cpp我有:

    case 4:
        {
            Pracownicy p;
            p.usun_pracownika();
        }
    break;

也许有人能帮我。


解决方案

我真的不知道该怎么办。

这取决于您打算做什么。

如果您不打算赋值,而是比较相等,则应该修复代码以使用相等运算符:==

如果您确实打算赋值,则可以:a)忽略警告或b)添加圆括号,告诉编译器您确实打算进行赋值,这不是一个错误。或如Christian Hackl c)将赋值和比较拆分为两个语句以提高可读性。

您的代码中还有另一个错误。擦除会将其余元素移位到左侧。下一个元素不再位于i++,因此您在擦除之后将跳过元素。如果擦除一个以上的元素,这也是低效的。有关更好的方法,请参阅erase-remove idiom。

相关文章