左值作为左操作数赋值时需要左值

时间:2016-05-08 18:01:05

标签: c++

我在基于数组的列表中使用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--;
              }
        }
}

1 个答案:

答案 0 :(得分:3)

myBooks[j].getBookranking()

可能是一个返回值的函数,例如

int getBookranking() { ... }

当你按照这样的值返回时,你会返回一个临时或 rvalue 。因此

getBookranking() = getBookranking()

没有任何意义 - 它只是用另一个临时覆盖一个,然后丢弃它们。

您需要setBookranking函数:

myBooks[j].setBookranking(myBooks[j-1].getBookranking());
myBooks[j-1].setBookranking(temp);