Bonsoir
Voilà, j'ai quelques doutes sur ma compréhension des namespace.
En effet, j'ai dans mon projet une classe abstraite Personnage. Celle-ci décrit des méthodes communes à ses filles, à savoir Guerrier, Sorcier...
Pour facilier la compréhension du code, et pour ne pas bloquer les noms de méthodes dans l'ensemble du programme, j'ai voulu créé un classement à l'aide des espaces de nom.
J'ai donc, dans un premier temps, mis ma classe Personnage dans un namespace Personnage.
Donc une première question : cela ne risque-t-il pas de poser certains problèmes lors du développement, étant donné que l'espace de nom possède le même nom que la classe ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 namespace Personnage { class Personnage { ... }; } // FIN namespace
Ensuite, j'ai fais comme suit au classes filles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 namespace Personnage { namespace Classe { class Guerrier : public Personnage { ... }; } // FIN GUERRIER } // FIN namespace
Donc, pour déclarer un guerrier, je faisCe code fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Personnage::Classe::Guerrier warrior;
Seulement, je pensais que je n'étais pas obligé de créer l'espace de nom Personnage, étant donné que je déclare une classe du même nom.
Donc je croyais que :
fonctionnaient tout aussi bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Personnage::Guerrier warrior; //(sans l'espace de nom Classe) ou Personnage::Classe::Guerrier warrior; // (avec l'espace de nom Classe)
Mais je me rend compte que ce n'est pas le cas. La compilation échouant.
Pour ma part, je présume que ça vient du fait que la classe Personnage est abstraite (donc non instanciable).
Si certains peuvent éclaircir ma petite lanterne, je suis tout ouïe
Partager