气泡排序中赋值c++的左操作数需要左值



我看到了这个问题的许多不同答案,并看过其中的许多答案,但我找不到问题的答案。我有这个错误

赋值的左操作数所需的左值

我正在使用冒泡排序函数对对象数组中的双值进行排序

void BubbleSort(Student* student=new Student[5])
{
    double temp;
    for(int i2=0; i2<=4; i2++) {
        for(int j=0; j<4; j++) {
            if(student[j].getBal() > student[j+1].getBal()) {
                temp = student[j].getBal();
                student[j] = student[j+1];
                student[j+1].getBal() = temp;
            }
        }
    }
}

在我班

double getBal()
{
    return this->bal;
}
void setBal(double bal)
{
    this->bal=bal;
}

对于像student[j+1].getBal()=temp;这样的语句,getBal()必须返回对该类成员变量的引用。然后,您的语句将通过引用修改该成员变量的值。

但不要这样做:更正常的做法是提供一个以double为参数的setBal()方法。

student[j+1].getBal()=temp;

函数调用为"Rvalue"。这意味着你不能分配它们。你正在做的事情有点像试图写1 = temp

最新更新