Comment accéder à une variable globale dans une portée locale?
C'est mon code
#include <iostream>
using namespace std;
int x = 5;
int main()
{
int x = 1;
cout << "The variable x: " << x << endl;
}
- Je obtenir en sortie 1
mais je voudrais avoir 5
comme dans l'accès au global x
variable.
Est-ce possible?
source d'informationauteur user3080728 | 2013-12-08
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en utilisant
::x
afin d'accéder à une variable globale dans une portée locale. L'opérateur::
est unaire opérateur de résolution de portée. Ainsi, votre code devrait être:Remarque:
::
opérateur a deux significations en C++:La quasi-totalité de votre codage heures, vous serait d'utiliser le Binaire opérateur de résolution de portée. Ainsi, bien que la réponse à cette question est unaire opérateur de résolution de portée; juste pour le plaisir de référence future, je enrôler certains cas d'utilisation typique de l'Binaire opérateur de résolution de portée.
Cas d'utilisation de la Binaire opérateur de résolution de portée:
1. Pour définir vos fonctions à l'extérieur de la classe.
Nous organiser notre code dans les fichiers d'en-tête avec .h extension et les fichiers de code .rpc extension. Alors que la définition de nos fonctions dans les fichiers de code, nous utilisons la
::
Binaire opérateur de résolution de portée.Par exemple,un Voiture.h fichier ressemble à ceci:
Et Car.cpp ressemblerait à:
Ici, comme on peut facilement constater,
::
agit sur deux opérandes:Donc, essentiellement, il définit le champ d'application de la fonction c'est à dire qu'il informe le compilateur que la fonction voiture() appartient à la classe Voiture.
2. Pour résoudre l'ambiguïté entre les deux fonctions avec le même modèle qui sont issus de classes différentes.
Considérons le code suivant:
Comme à la fois les fonctions dérivées de la classe de BMW ont le même modèle, l'appel
b.drive
qui va provoquer une erreur de compilation. Ainsi, pour spécifier les voiture() nous voulons, nous utilisons la::
opérateur.3. Pour remplacer le substituée fonction.
Binaire opérateur de résolution de portée permet d'appeler la fonction de la classe de base qui est redéfinie dans une classe dérivée à l'aide de la dérivée de la classe de l'objet. Voir le code ci-dessous:
4. Pour accéder aux données membres statiques.
Comme nous le savons, les données membres statiques sont partagées par la classe de base par les objets de cette classe. Par conséquent, nous ne devrions pas (bien que nous le pouvons) utiliser des objets à la portée des variables statiques. Voir le code suivant: