J'ai déclaré une classe X Xh comme suit:inclusion d'espace de noms ++ C dans les fichiers .cc
namespace Foo {
class X{
....
};
}
Dans X.cc Je voudrais définir les constructeurs, les méthodes pour X.
Do I besoin d'inclure toutes mes définitions à l'intérieur namespace Foo {...}
ou le préfixe X comme Foo :: X :: pour chaque méthode?
Il semble que parfois je peux dire (en utilisant l'espace de noms Foo) et ne pas le mentionner à nouveau, -à-dire définir simplement des méthodes comme X :: X() {...}
Quelle est l'approche correcte ici ?
'+ 1' pour recommander contre l'utilisation de directives. Ils mènent au côté obscur de la langue. – sbi
@sbi: Je comprends que nous ne voulons pas utiliser 'namespace N' dans un fichier .h. Pourquoi est-il mauvais de l'avoir dans le fichier .cc? – user231536
@ user231536: Il est plus difficile de comprendre le code source car vous ne savez pas d'où viennent les noms. Il introduit _all_ des noms dans l'espace de noms englobant, ce qui peut causer une grande variété de problèmes, dont l'un des plus importants est que vous pouvez involontairement prendre en compte des surcharges de fonctions supplémentaires pendant la résolution de surcharge, ce qui peut entraîner une mauvaise fonction. appelé (ou des erreurs folles à la compilation). –