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 paramètres 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 value (int).
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;
}
};
En changeant l'argument du constructeur en int, nous pouvons maintenant initialiser l'objet Foo dans la portée du constructeur sans aucune erreur.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3