我在基于数组的列表中使用insertSort方法,并使用我的getRanking和int变量对列表进行排序 但是它给了我"左值作为左操作数"
void bookList::insertionSort(){
int j,temp;
for (int i = 0; i < last; i++){
j = i;
while (j > 0 && myBooks[j].getBookranking() < myBooks[j-1].getBookranking()){
temp = myBooks[j].getBookranking();
myBooks[j].getBookranking() = myBooks[j-1].getBookranking();
myBooks[j-1].getBookranking() = temp;
j--;
}
}
}
答案 0 :(得分:3)
myBooks[j].getBookranking()
可能是一个返回值的函数,例如
int getBookranking() { ... }
当你按照这样的值返回时,你会返回一个临时或 rvalue 。因此
getBookranking() = getBookranking()
没有任何意义 - 它只是用另一个临时覆盖一个,然后丢弃它们。
您需要setBookranking
函数:
myBooks[j].setBookranking(myBooks[j-1].getBookranking());
myBooks[j-1].setBookranking(temp);