Nicht-konstante L-Wert-Referenz kann nicht an R-Wert gebunden werden: Eine Lösung
Im angegebenen Codeausschnitt ist beim Initialisieren eines Objekts der Klasse Foo ein Fehler aufgetreten innerhalb des Konstruktors der Klasse Bar. Die Fehlermeldung weist darauf hin, dass eine nicht konstante l-Wert-Referenz (Foo f) an einen r-Wert (das Ergebnis des Aufrufs von genValue()) gebunden wird.
In C können nicht konstante Referenzparameter nur auf benannte verweisen Variablen (L-Werte). Das Ergebnis von genValue() ist jedoch ein temporärer Wert (rvalue). Um dieses Problem zu lösen, müssen wir den Wert von genValue() als Wert (int) übergeben.
<code class="cpp">class Foo { public: Foo(int x) { this->x = x; } private: int x; }; class Bar { public: Bar(): f(genValue()) { } private: Foo f; int genValue() { int x; // do something ... x = 1; return x; } };</code>
Indem wir das Konstruktorargument in int ändern, können wir jetzt das Foo-Objekt innerhalb des Konstruktorbereichs ohne initialisieren irgendwelche Fehler.
Das obige ist der detaillierte Inhalt vonWarum kann ich eine nicht konstante L-Wert-Referenz nicht an einen R-Wert in C binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!