"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > ## Pourquoi ma valeur de température est-elle stockée dans le tableau au lieu de la variable prévue dans ma classe C ++?

## Pourquoi ma valeur de température est-elle stockée dans le tableau au lieu de la variable prévue dans ma classe C ++?

Publié le 2025-03-22
Parcourir:342

## Why is my temperature value being stored in the array instead of the intended variable in my C   class?

Variables d'ombrage dans C

En programmation orientée objet, l'ombrage se produit lorsqu'une variable définie dans une classe a le même nom qu'une variable dans une lunette extérieure. Cela peut conduire à un comportement inattendu, car la variable intérieure prévoit la variable extérieure.

Problème: ombrage dans une classe

Considérez la définition de classe suivante:

class Measure {
    int N;
    double measure_set[];
    char nomefile[];
    double T;

    public:
    void get( );
    void printall( );
    double mean( );
    double thermal_comp( );
};

Mesure de classe { int n; double mesure_set []; char nomefile []; double t; publique: void get (); void printall (); double moyenne (); double thermal_comp (); };

La méthode GET dans cette classe est destinée à lire les valeurs à partir d'un fichier et à les enregistrer dans le tableau de mesure_set, et à lire une valeur de température et à la stocker dans la variable T cout > nomefile; cout > MEATH_SET [M]; if (f.eof ()) casser; M; } f.close (); N = m 1; cout > t; cout void Measure::get() { cout > nomefile; cout > measure_set[M]; if (f.eof()) break; M ; } f.close(); N = M 1; cout > T; cout

Pour éviter l'observation, vous pouvez soit utiliser différents noms pour les variables ou utiliser l'opérateur de résolution de portée (: :) pour vous référer explicitement à la variable de la classe.

this:

void me mesure :: get () { cout > nomefile; cout > MEATH_SET [M]; if (f.eof ()) casser; M; } f.close (); N = m 1; cout > température; T = température; cout L'utilisation de l'opérateur de résolution de portée pour se référer explicitement à la variable de membre de classe ressemblerait à ceci:

void me mesure :: get () { cout > nomefile; cout > MEATH_SET [M]; if (f.eof ()) casser; M; } f.close (); N = m 1; cout > this-> t; // Utilisez l'opérateur de résolution de portée pour se référer à la variable de membre de la classe cout

Dernier tutoriel Plus>

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