Forum Solarus-Games francophone

Jeux amateurs => Programmation => Discussion démarrée par: Morwenn le 12 Septembre 2011 à 23:46

Titre: [Résolu] [C++] Problème d'inclusion
Posté par: Morwenn le 12 Septembre 2011 à 23:46
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 :
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 :)
Titre: Re : [C++] Problème d'inclusion
Posté par: Noxneo le 13 Septembre 2011 à 02:16
"Forward declaration" (http://en.wikipedia.org/wiki/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:
Titre: Re : [C++] Problème d'inclusion
Posté par: Morwenn le 13 Septembre 2011 à 19:52
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
Titre: Re : [Résolu] [C++] Problème d'inclusion
Posté par: 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.
Titre: Re : [Résolu] [C++] Problème d'inclusion
Posté par: Noxneo le 13 Septembre 2011 à 21:50
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