Bonjour
J'apprends le C++, notament avec le livre de mr Marius Vassiliu qui propose dans son bouquin au chapitre 4 un exemple de code pour illustrer l'accès aux méthodes d'une classe. Dans ce code on a une fonction globale Surface() et une méthode Surface(). A l'intérieur d'un objet, la fonction globale est masquée par la méthode, aussi pour l'appeler de l'intérieur de l'objet il propose d'utiliser l'opérateur de résolution de portée globale :: . Je pense avoir jusqu'ici tout compris, sauf que lorsque je compile ce code(avec Visual C++ 2005) le compilateur me renvoie invariablement le message suivant :
: error C2039: 'Surface'*: n'est pas membre de '`global namespace''
Conclusion j'ai du mal comprendre...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 const float PI = 3.1415926535f; class CCercle { public : float rayon,x,y; void InitCenter(){ x = y = 0 ; } float Surface() const {return PI*rayon*rayon;} void AffIntSurfaceInt(){printf("Surface=%f\n",Surface());} void AffIntSurfaceExt(){printf("Surface=%f\n",::Surface(this));} }; float Surface(CCercle *pc){return PI*pc->rayon*pc->rayon;}
Partager