Maison > développement back-end > C++ > Pourquoi ne puis-je pas lier une référence Lvalue non-Const à une Rvalue en C ?

Pourquoi ne puis-je pas lier une référence Lvalue non-Const à une Rvalue en C ?

DDD
Libérer: 2024-10-31 04:07:34
original
378 Les gens l'ont consulté

 Why Can't I Bind a Non-Const Lvalue Reference to an Rvalue in 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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal