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 :)
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
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
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
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 :)
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 :)
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 :)