La variable C avec le même nom de, contexte: global et privé,
Question
Dans le code suivant, g ++ donne cette erreur:
1.cpp: En fonction membre void W::test()':
1.cpp:6: error:
int F :: glob » est privé
1.cpp: 19: erreur: dans ce contexte
Mais, ne devrait pas le déclarer globalement variable « glob » employée ici, au lieu du "privé" "glob"?
#include <iostream.h>
int glob;
class F
{
int glob;
public:
void readIt()
{
cin >> glob;
}
};
class W : public F
{
public:
void test()
{
glob--;
}
};
int main()
{
}
La solution
Les variables et les fonctions sont accessibles en utilisant les règles de cadrage, pas de règles visbility. Parce que F::glob
est le glob
dans le cadre de W::test()
, il est utilisé. Cependant, W::test()
n'a pas accès à F::glob
, et une erreur se produit. Le compilateur ne pas vérifier ::glob
parce que quelque chose d'autre dans précède la portée « priorité » (pas sûr pour le terme exact).
Autres conseils
ombres glob privé le glob global, de sorte que l'erreur est correcte utiliser :: glob pour accéder à la variable globale si u l'intention d'utiliser la variable globale
Vous pouvez essayer d'utiliser à la place ::glob--;
. De cette façon, vous dites au compilateur d'utiliser l'espace de noms global.
membre de classe sera utilisé ici, pour accéder à une utilisation variable globale :: opérateur.