g++: non-lvalue in assignment
-
int *arr1,*arr2; for(int i=0;i<anzahlDerElemente;++i) arr1++=arr2++=new int(rand()); // hier der error
Der Compiler meldet 'non-lvalue in assignment'
Warum geht das nicht?
-
weil i++ kein lvalue ist?
-
und warum muss es lvalue sein?
-
Raptor schrieb:
und warum muss es lvalue sein?
weil du ihm etwas zuweisen willst.
primitiv gesagt:
lvalue: alles was links von einem = stehen darf
-
warum muss es unbedingt lvalue sein?
lvalue heisst doch nur, dass eine variable eine adresse im hauptspeicher.
kann der compiler das wirklich nicht? *hoff*sonst muesste ich es anders machen, wenn es keinen anderen weg gaebe.
-
Postfixinkrement und dekrement erzeugen beide ein Temp Objekt mit dem alten Wert
und erhöhen das echte um 1, daher kannst du nur den Prefixinkrement und dekrement
beim lvalue verwenden.
-
und siehe da.. es funktioniert.
danke sirlant.