void Sort(Maximumas Maxi[], int ind){
    int m = 0; // begin
    bool bk = true;
    while(bk){
        bk = false;
        for(int j=ind-1; j>m; j--){
            if(Maxi[j].GetQuantity() > Maxi[j-1].GetQuantity()){
                bk = true;
                int c = Maxi[j].GetQuantity();
                Maxi[j].GetQuantity() = Maxi[j-1].GetQuantity();
                Maxi[j-1].GetQuantity() = c;
            }
        }
        m++;
    }
}


当我尝试编译此代码时,出现错误:
表达式必须是可修改的左值

我的代码有什么问题?

最佳答案

我的猜测是Maximumas::GetQuantity()按值或const引用返回,所以您不能做这种事情:

Maxi[j-1].GetQuantity() = c;


您需要一个返回引用的重载。假设它返回int,则需要类似

int& GetQuantity();
const int& GetQuantity() const;


const重载允许您在const实例上或通过const引用调用成员。

请注意,除非进行此练习,否则将std::sort与合适的谓词一起使用会更简单。

10-04 14:48