variabile C ++ con lo stesso nome, il contesto: globale e privata,
Domanda
Nel codice seguente, g ++ dà questo errore:
1.cpp: In funzione membro void W::test()':
1.cpp:6: error:
int F :: glob' è privata
1.cpp: 19: errore: in questo contesto
Ma, non dovrebbe la dichiarata a livello globale variabile 'glob' essere usato qui, invece del "glob" "privato"?
#include <iostream.h>
int glob;
class F
{
int glob;
public:
void readIt()
{
cin >> glob;
}
};
class W : public F
{
public:
void test()
{
glob--;
}
};
int main()
{
}
Soluzione
Le variabili e le funzioni sono accessibili utilizzando le regole di scoping, non regole visbility. Poiché F::glob
è il glob
nell'area di W::test()
, esso viene utilizzato. Tuttavia, W::test()
non ha accesso a F::glob
, e un errore. Il compilatore non verificare la presenza di ::glob
perché qualcos'altro precede in ambito "priorità" (non sono sicuro per il termine esatto).
Altri suggerimenti
glob privato ombre il glob globale, quindi l'errore è corretto utilizzare :: glob di accedere alla variabile globale se u intenzione di usare variabile globale
Si può provare a utilizzare ::glob--;
invece. In questo modo si indica al compilatore di utilizzare lo spazio dei nomi globale.
membro della classe verrà utilizzato qui, per accedere all'uso variabile operatore globale ::.