[Résolu] [C++] Problème d'inclusion

Démarré par Morwenn, 12 Septembre 2011 à 23:46

0 Membres et 1 Invité sur ce sujet

12 Septembre 2011 à 23:46 Dernière édition: 13 Septembre 2011 à 19:53 par Morwenn
Je suis actuellement partagé et ne sais trop que faire vis-à-vis d'un problème d'inclusion en C++. Je vais essayer de prendre un exemple simplifié pour illustrer mon problème. Je suis certain qu'il y a une réponse toute bête, mais je ne la vois pas (la fatigue peut-être ? :P).

Disons que je veux faire une librairie mathématiques (c'est un pur exemple), et que j'ai les fichiers suivants :

  • cercle.hpp
  • cercle.cpp
  • disque.hpp
  • disque.cpp
Estimons que j'aie juste la classe Cercle dans cercle.hpp et la classe Disque dans disque.hpp et que toutes leurs fonctions soient définies dans les .cpp, un truc basique, quoi.

Je veux avoir les fonctions suivantes :


class Cercle
{
   ...
   // Constructeur
   Cercle(Disque& D);
  ...
};


et


class Disque
{
   ...
   // Constructeur
   Disque(Cercle& C);
  ...
};


Je suis censé me débrouiller comment avec l'inclusion des différents fichiers pour ne pas avoir de problèmes ?^^"

Merci d'avance de vos réponses :)

13 Septembre 2011 à 02:16 #1 Dernière édition: 13 Septembre 2011 à 02:19 par Guillaume
"Forward declaration" dans les headers.

Dans Cercle.cpp:

class Disque;

Class Cercle{
[...]
}


Dans Disque.cpp:

class Cercle;

class Disque{
[...]
}


Pas besoin d'inclure de headers tant que les seuls appels à la classe forward declared sont sous forme de références ou de pointeurs. Dans tes fichiers d'implémentations (*.cpp), tu inclues la classe comme de coutume. N'oublie pas les headers guards.

Aussi, on est plus sous DOS3.0, pas besoin de mettre "hpp" comme extension de headers- "h" c'est plus joli :ninja:

Bah merci beaucoup, je ne pensais pas que ça marchait aussi pour les classes (trop habitué au C, et pas assez aux principes du CPP). Quand je disais qu'il y avait une méthode simple... x)

Pour les ".hpp", c'était juste histoire que ce soit clair à 100%. Mais je suis d'accord pour dire que ".h", ça fait mieux :P

L'avantage des .hpp est que les éditeurs de texte font de la meilleure coloration syntaxique que les .h, généralement considérés par défaut comme du C.
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

Citation de: Christopho le 13 Septembre 2011 à 20:01
L'avantage des .hpp est que les éditeurs de texte font de la meilleure coloration syntaxique que les .h, généralement considérés par défaut comme du C.

Si tu utilises un éditeur en carton, c'est sûr :P