J'ai une classe A
, et deux classes, B
et C
, héritant de A
.Solution de contournement pour ifdef/ifndef
Outre les méthodes de A
, chaque classe est d'offrir des choses différentes, et, par conséquent, je voudrais les mettre dans deux fichiers différents - b.hpp
et c.hpp
, car ils sont des modèles avec des fonctions en ligne. J'ai aussi une classe User
, en utilisant à la fois B
et C
classes. En user.cpp
, je devrais avoir quelque chose près de:
# include "b.hpp"
# include "c.hpp"
class User{
...;
};
Ce qui soulèverait une erreur de redéfinition du compilateur, pour ce que je garde les deux classes B
et C
dans un bc.hpp
.
La préoccupation ici est plutôt autre esthétique qu'une erreur de programmation: Je ne trouve pas seulement très élégant en utilisant ifdef/ifndef
directives dans de petites applications - ils cherchent toujours à moi comme la solution de l'EDI pour les gérer trop de modules, et pour ceux qui ne sont même pas au courant des directives.
Y at-il (même non standard, mais au moins sain d'esprit) solution de contournement pour cela, ou dois-je rester avec soit avoir deux classes différentes dans le même fichier et en utilisant ifdef/ifndef
?
Je suis d'accord qu'ils sont utilisés par des gens très professionnels - J'ai vu le code du noyau en parlant 'ifndef' une fois que je devais l'ouvrir ^^ C'est juste que je suis habitué à éviter de l'utiliser pour des applications trop petites, comme celle que je suis en train de développer Devinez je vais devoir accepter les faits, de toute façon (: Merci à tous pour les réponses! – Rubens
@Rubens Pour l'instant, les gardes d'en-tête sont la façon dont C++ atteint ce type de modularité: – Potatoswatter
Ma façon de faire est: garder les en-têtes inclus aussi bas que possible pour améliorer le temps de compilation, mais toujours mettre des gardes de sécurité pour ne pas se soucier des doubles imbriqués – Mic