2016-04-01 114 views
1

我看到这个问题的许多不同的答案,并已经看了很多人,但我无法找到我的问题的答案。 我有这样的错误需要左值操作数需要作为左操作数的分配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; 
} 
+3

getBal()' – MokaT

+5

'Student * student = new Student [5]'作为默认参数的返回类型是纯粹的邪恶。你怎么知道你是否应该删除参数? – Bathsheba

+0

您的交换逻辑不正确,突然间您有两个相同的学生,但有不同的余额。 –

回答

3

对于像这样的陈述有意义,getBal()将不得不返回一个参考到类的成员变量。然后,您的声明将修改该成员变量的引用值。

但是不要那样做:更正常的做法是提供一个setBal()方法,该方法将double作为参数。

+0

'学生[j + 1] .setBal(temp);'这是解决方案。谢谢 ! –

0

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

函数调用是“Rvalue”。这意味着你不能分配它们。 你在做什么有点像试图写1 = temp

相关问题