2010-02-10 11 views
3

Dans un précédent Q & A (How do I define friends in global namespace within another C++ namespace?), la solution a été donnée pour faire un ami fonction définition dans un espace de noms qui se réfère à une fonction dans l'espace de noms global. J'ai la même question pour classes. Si je place CBaseSD dans un espace de noms, cela fonctionne; par exemple friend class SD :: CBaseSD; mais je n'ai pas trouvé d'incantation qui fonctionne pour l'espace de noms global.Comment définir une classe d'amis à partir de l'espace de noms global dans un autre espace de noms?

Je compile avec g ++ 4.1.2.

+2

fonctionne très bien ici (VC++ 2008) – Manuel

+0

GCC semble se plaindre de la virgule non nécessaire après l'accolade de fermeture de l'espace de noms cb – Manuel

+0

Manuel est juste ça marche bien même en vC++ 2003, donc 1+. – Ashish

Répondre

-2

ajouter la déclaration en avant comme ci-dessous

 
namespace { 
    // anonymous namespace declaration 
    class CBaseSD; 
} 

then your normal 

friend class CBaseSD;// no need of :: 

œuvres dans CBase

+0

les déclarations sont par défaut dans la portée du fichier. Nous pouvons simplement déclarer dans une portée globale :-) –

+0

Ne pas confondre les espaces de noms anonymes et globaux –