J'essaie un premier programme utile orienté objet avec une utilisation de l'espace de noms. J'ai une classe de base B qui est dans l'espace de noms ns. Si j'essaie d'hériter de cela Classe de base pour obtenir le travail d'héritage, je devrais utiliser le NS :: B dans la sclérance de la classe comme ci-dessous, est-ce vraiment le cas? Ou y a-t-il une syle plus largement acceptée pour cette syntaxe d'héritage?
namespace NS { class D: public NS::B{ ... }; }
3 Réponses :
Si votre d code> est dans
Nomspace ns code>, vous n'avez pas à qualifier
ns :: B code>, puisque
d < / code> et
b code> sont dans la même espace de noms. Vous pouvez simplement utiliser
classe D: publique B code>. P>
Lorsque vous êtes à l'intérieur de l'espace de noms Les deux définitions suivantes de et: p > (1) recherche dépendante de l'argument (ADL) peut causer des Problèmes laids , en particulier lors de l'utilisation de modèles et pour les corriger, vous devrez peut-être pouvoir qualifier de noms. p> p> NS code>, vous ne (1) sup> besoin de qualifier les noms des fonctions, des classes ou d'autres entités qui sont dans le Espace de noms
ns code>. Donné:
d code> sont les mêmes: p>
Je suppose que j'ai fait une erreur quelque part dans le makefile, c'est ce à quoi je m'attendrais aussi, merci pour les réponses de toute façon.
@Umut: Vous pouvez toujours essayer de simples demandes de renseignements comme celle-ci dans un fichier unique minimal.
Comment avez-vous ajouté la note de bas de page surélevée?
Vous n'avez pas besoin de désigner NS depuis que vous êtes déjà à l'intérieur
#include <iostream> int x = 10; int main() { int x = 5; //This will show the local x std::cout << x << std::endl; //This is how you access the Global x std::cout << ::x << std::endl; return 0; }