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''

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;}
Conclusion j'ai du mal comprendre...