Maison > Article > développement back-end > Pourquoi ne puis-je pas lier une référence Lvalue non-Const à une Rvalue en C ?
Impossible de lier une référence Lvalue non-const à Rvalue : une résolution
L'extrait de code donné a rencontré une erreur lors de l'initialisation d'un objet de la classe Foo au sein du constructeur de la classe Bar. Le message d'erreur indique qu'une référence lvalue non const (Foo f) est liée à une rvalue (le résultat de l'appel de genValue()).
En C, les paramètres de référence non const ne peuvent faire référence qu'à des noms nommés. variables (valeurs). Cependant, le résultat de genValue() est une valeur temporaire (rvalue). Pour résoudre ce problème, nous devons transmettre la valeur de genValue() par valeur (int).
<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>
En changeant l'argument du constructeur en int, nous pouvons maintenant initialiser l'objet Foo dans la portée du constructeur sans des erreurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!