OVH Cloud OVH Cloud

Usage de 'using' sur des types simples

12 réponses
Avatar
Yann Renard
Bonjour à tous,

dans un logiciel que je développe, j'ai défini un type 'boolean' dans un
namespace à moi. Dans l'ensemble de mes .h j'écris toujours l'ensemble
des namespaces nécessaires pour qualifier un type, mais dans les .cpp,
j'utilise un 'using namespace AMoi'. Le problème est que windows définit
lui aussi le type 'boolean' dans ses headers. Je pourrais qualifier
explicitement mon tous les 'boolean' de mon .cpp moi même mais cela
surchargerait pas mal. Il me semble avoir vu quelque part une syntaxe du
type 'using AMoi::MonType' pour lever l'ambiguïté. Est ce que quelque
chose de ce genre existe ?

A+
Yann
--
Yann Renard - To send me an email, remove no-spam sectionS :)

2 réponses

1 2
Avatar
kanze
Fabien LE LEZ wrote:
On Wed, 30 Aug 2006 10:44:57 +0200, Yann Renard :

Il me semble avoir vu quelque part une syntaxe du
type 'using AMoi::MonType' pour lever l'ambiguïté.


En l'occurence, ça ne lèvera rien du tout. C'est juste
l'équivalent de "using namespace AMoi", sauf que ça ne
concerne qu'un type au lieu de l'ensemble des types définis
dans le namespace.


Pas du tout. Un « using namespace AMoi ; » (dit « using
directive » dans la norme) joue sur la
recherche des noms. Un « using AMoi::boolean » est une
déclaration, comme un typedef. S'il existe déjà un symbole
« boolean » dans l'espace référentiel, il y a une erreur
immédiate.

Il y a un autre usage de using, qui n'a rien à voir (et qui
aurait aussi bien pu utiliser un autre mot-clé) : il permet de
"recopier" explicitement une déclaration d'une classe de base
dans une classe dérivée.


C'est en fait exactement le même « using » que la declarations
à la portée référencielle. C'est une « declaration » dans la
portée où elle apparaît.

--
James Kanze GABI Software
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


Avatar
Yann Renard
kanze wrote:
Fabien LE LEZ wrote:
On Wed, 30 Aug 2006 10:44:57 +0200, Yann Renard :

Il me semble avoir vu quelque part une syntaxe du
type 'using AMoi::MonType' pour lever l'ambiguïté.


En l'occurence, ça ne lèvera rien du tout. C'est juste
l'équivalent de "using namespace AMoi", sauf que ça ne
concerne qu'un type au lieu de l'ensemble des types définis
dans le namespace.


Pas du tout. Un « using namespace AMoi ; » (dit « using
directive » dans la norme) joue sur la
recherche des noms. Un « using AMoi::boolean » est une
déclaration, comme un typedef. S'il existe déjà un symbole
« boolean » dans l'espace référentiel, il y a une erreur
immédiate.

Il y a un autre usage de using, qui n'a rien à voir (et qui
aurait aussi bien pu utiliser un autre mot-clé) : il permet de
"recopier" explicitement une déclaration d'une classe de base
dans une classe dérivée.


C'est en fait exactement le même « using » que la declarations
à la portée référencielle. C'est une « declaration » dans la
portée où elle apparaît.


Merci :)

Yann
--
Yann Renard - To send me an email, remove no-spam sectionS :)



1 2