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
与合适的谓词一起使用会更简单。