Precisions sur la resolution de noms avec les namespaces
2 réponses
Aurelien Regat-Barrel
Bonjour,
L'exemple suivant compile, et je ne comprends pas vraiment pourquoi:
namespace nm
{
class A
{
public:
A( int ) {}
};
}
class B : public nm::A
{
B() : A( 10 ) // au lieu de nm::A( 10 )
{
A a( 1 ); // OK
}
};
Je me doute que les 2 dernières lignes ne posent pas problème grâce à la
même règle, mais j'ai du mal à la deviner et à la comprendre.
Quelle est cette règle qui équivaut à un "using nm::A" implicite ?
Pourquoi ce comportement, que j'aurais tendance à qualifier d'effet de
bord ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Reno
La règle du unqualified name lookup. A est d'abord cherché dans le scope de la classe B puis dans le(s) scope(s) des base classes puis finalement dans le scope global.
La règle du unqualified name lookup. A est d'abord cherché dans le
scope de la classe B puis dans le(s) scope(s) des base classes puis
finalement dans le scope global.
La règle du unqualified name lookup. A est d'abord cherché dans le scope de la classe B puis dans le(s) scope(s) des base classes puis finalement dans le scope global.
Aurelien Regat-Barrel
La règle du unqualified name lookup. A est d'abord cherché dans le scope de la classe B puis dans le(s) scope(s) des base classes puis finalement dans le scope global.
Ok. Merci de ta réponse.
-- Aurélien Regat-Barrel
La règle du unqualified name lookup. A est d'abord cherché dans le
scope de la classe B puis dans le(s) scope(s) des base classes puis
finalement dans le scope global.
La règle du unqualified name lookup. A est d'abord cherché dans le scope de la classe B puis dans le(s) scope(s) des base classes puis finalement dans le scope global.