这是我的问题!!
for( i = 0; i <= MAX - 2; i++){
for( j = i + 1; j <= MAX - 1; j++){
if(stud[i].getEdad() < stud[j].getEdad()){
temp=stud[i].getEdad();
stud[i].getEdad() = stud[j].getEdad();
stud[j].getEdad() = temp;
}
}
}
答案 0 :(得分:1)
我认为问题的根源是
stud[i].getEdad() = stud[j].getEdad().
左值(定位符值)表示占据存储器中某些可识别位置的对象(即具有地址)。 rvalues由排除定义,表示每个表达式都是左值或右值。因此,从上面的左值定义来看,rvalue是一个表达式,它不代表占用内存中某些可识别位置的对象
如上所述,赋值期望左值作为左操作数,即
//Here foo returns a reference i.e lvalue so ther's no problem in below code.
int& foo()
{
return globalvar;
}
int main()
{
foo() = 10;
return 0;
}
//whereas following one will give you an error since return value is just a temporary object and you are assigning to it.
int foo()
{
return globalvar;
}
int main()
{
foo() = 10;
return 0;
}