Heim > Backend-Entwicklung > C++ > Warum kann ich eine nicht konstante L-Wert-Referenz nicht an einen R-Wert in C binden?

Warum kann ich eine nicht konstante L-Wert-Referenz nicht an einen R-Wert in C binden?

DDD
Freigeben: 2024-10-31 04:07:34
Original
379 Leute haben es durchsucht

 Why Can't I Bind a Non-Const Lvalue Reference to an Rvalue in C  ?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage