[Namespace] Incompréhension avec un classe abstraite
Bonsoir :D
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.
Code:
1 2 3 4 5
| namespace Personnage {
class Personnage
{ ... };
} // FIN namespace |
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 ?
Ensuite, j'ai fais comme suit au classes filles :
Code:
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 fais
Code:
Personnage::Classe::Guerrier warrior;
Ce code fonctionne.
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 :
Code:
1 2 3
| Personnage::Guerrier warrior; //(sans l'espace de nom Classe)
ou
Personnage::Classe::Guerrier warrior; // (avec l'espace de nom Classe) |
fonctionnaient tout aussi bien.
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 ;)