C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

conflit de nom

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Drakkhen
Guest





PostPosted: Thu May 20, 2004 8:47 am    Post subject: conflit de nom Reply with quote



Bonjour,

J'ai besoin de nommer une fonction de classe : sqrt
et j'ai besoin d'utiliser la fonction sqrt de math.h dedans.

Je me retrouve avec un conflit de nom que je ne sais pas resoudre.

Pourriez-vous svp me dire comment faire?
merci.


Back to top
Anthony Fleury
Guest





PostPosted: Thu May 20, 2004 9:23 am    Post subject: Re: conflit de nom Reply with quote



Drakkhen wrote:

Quote:
Bonjour,


Bonjour,

Quote:
J'ai besoin de nommer une fonction de classe : sqrt
et j'ai besoin d'utiliser la fonction sqrt de math.h dedans.

Je me retrouve avec un conflit de nom que je ne sais pas resoudre.

Présenté ainsi il n'y a aucun conflit de nom. Il suffit d'utiliser
l'opérateur de résolution de portée ::.

#include <math.h>

class foo {
public:
double sqrt(double) { ::sqrt(2.0); }
};

l'operateur :: ira chercher sqrt() dans l'espace de nom global et ainsi la
fonction sqrt de foo ne s'appelera pas récursivement.

De plus, les en-têtes de la librairie standard utilisent maintenant (pour
les compilateurs qui respectent cette partie de la norme) l'espace de nom
`std' pour leurs inclusions. Donc la fonction sqrt, sauf using definition,
se retrouverai accessible par std::sqrt(2.0).

Anthony
--
"You could be my unintended, choice to live my life extended
You should be the one I'll always love, I'll be there as soon as I can
But I'm busy mending broken pieces of the life I had before"
(C) Muse - Unintended

Back to top
Jean-Noël Mégoz
Guest





PostPosted: Sun May 23, 2004 2:14 am    Post subject: Re: conflit de nom Reply with quote




"Anthony Fleury" <fleury_anthony (AT) _hotmail_ (DOT) com> a écrit dans le message de
news:40ac7a1f$0$7707$636a15ce (AT) news (DOT) free.fr...
Quote:
Drakkhen wrote:

Bonjour,


Bonjour,

J'ai besoin de nommer une fonction de classe : sqrt
et j'ai besoin d'utiliser la fonction sqrt de math.h dedans.

Je me retrouve avec un conflit de nom que je ne sais pas resoudre.

Présenté ainsi il n'y a aucun conflit de nom. Il suffit d'utiliser
l'opérateur de résolution de portée ::.

#include
class foo {
public:
double sqrt(double) { ::sqrt(2.0); }
};

l'operateur :: ira chercher sqrt() dans l'espace de nom global et ainsi la
fonction sqrt de foo ne s'appelera pas récursivement.


J'ai du mal à saisir le caractère indispensable de nommer une fonction
"sqrt" ! Wink)
Ceci dit, la réponse d'Anthony est instructive. Merci !
J.No.



Back to top
James Kanze
Guest





PostPosted: Sun May 23, 2004 7:25 pm    Post subject: Re: conflit de nom Reply with quote

Anthony Fleury <fleury_anthony (AT) _hotmail_ (DOT) com> writes:

Quote:
Drakkhen wrote:

J'ai besoin de nommer une fonction de classe : sqrt et j'ai besoin
d'utiliser la fonction sqrt de math.h dedans.

Je me retrouve avec un conflit de nom que je ne sais pas resoudre.

Présenté ainsi il n'y a aucun conflit de nom. Il suffit
d'utiliser l'opérateur de résolution de portée ::.

#include
class foo {
public:
double sqrt(double) { ::sqrt(2.0); }
};

l'operateur :: ira chercher sqrt() dans l'espace de nom global et
ainsi la fonction sqrt de foo ne s'appelera pas récursivement.

Attention cependant. La norme l'interdit, mais c'est assez fréquent
que les en-têtes C contient des macros à la place des fonctions.
Disons quelque chose du genre :

extern double sqrt( double ) ;
#define sqrt( d ) __builtin_sqrt( d )

J'ai déjà eu ce problème dans la passée (pas très distante,
d'ailleurs).

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.