2016-04-01 8 views
1

Ich sehe viele verschiedene Antworten auf diese Frage und habe mir viele von ihnen angesehen, aber ich kann die Antwort auf mein Problem nicht finden. Ich habe diesen Fehlerlvalue erforderlich als linker Operand der Zuweisung C++ in Bubble Sort

lvalue als linken Operanden Zuordnung erforderlich

I Blase Sortierfunktion bin mit den Objekten in meinem Array doppelten Wert sortieren

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; 
      } 
     } 
    } 
} 

In meiner Klasse

double getBal() 
{ 
    return this->bal; 
} 
void setBal(double bal) 
{ 
    this->bal=bal; 
} 
+3

Was ist der Rückgabetyp von 'getBal()' – MokaT

+5

'Student * Student = neuer Student [5]' als ein Standardargument ist rein böse. Woher weißt du, ob du den Parameter löschen sollst? – Bathsheba

+0

Ihre Auslagerungslogik ist falsch, plötzlich haben Sie zwei Schüler, die gleich sind, aber unterschiedliche Salden haben. –

Antwort

3

Für eine Aussage wie student[j+1].getBal()=temp; Sinn machen, getBal() müsste eine Referenz auf eine Membervariable der Klasse zurückgeben. Ihre Anweisung würde dann den Wert dieser Elementvariablen durch diese Referenz ändern.

Aber tun Sie es nicht so: die normale Sache zu tun wäre, eine setBal() Methode zur Verfügung zu stellen, die einen double als Parameter nimmt.

+0

'Schüler [j + 1] .setBal (temp);' Dies ist die Lösung. Vielen Dank ! –

0

Schüler [j + 1] .getBal() = temp;

Funktionsaufruf sind "Rvalue". Dies bedeutet, dass Sie sie nicht zuordnen können. Was Sie tun, ist ein bisschen wie zu schreiben versuchen 1 = temp.

Verwandte Themen