Association de classes en C++

Fermé
chmanu Messages postés 166 Date d'inscription mardi 15 mai 2001 Statut Membre Dernière intervention 3 septembre 2012 - 8 janv. 2002 à 15:55
 chmanu - 9 janv. 2002 à 15:47
Salut tous,
J ai un programme issu d'un shéma UML, et j ai deux classe par exemple Propriete et Joueur et je voudrais associer ces deux classes :
un Joueur possede des proprietes et une Propriete appartient à un joueur.
j ai donc lier les deux class par des pointeurs.
Seulement, mon compilateur ne veut pas car ds joueur.h j ai fais un #include "propriete.h" et ds propriete.h j ai fait #include "joueur.h". J etais pourtant sur que ca pouvait marcher qd meme!
Est ce de la faute du compilateur?
comment faire pour garder deux fichier separés?

1 réponse

chmanu Messages postés 166 Date d'inscription mardi 15 mai 2001 Statut Membre Dernière intervention 3 septembre 2012 28
8 janv. 2002 à 16:37
Bien je pense que je pourrai m'en tirai avec ca :

http://groups.google.com/groups?q=multiple+%23include&hl=fr&selm=1989Nov6.172747.9547%40paris.ics.uci.edu&rnum=2

c'est tres bien expliquer bien que ce soit en anglais.
(j aime bien mettre les solutions de mes pb car si jamais qq un (ou moi) en a besoin un jour, il a ka rech ds le forum.

Tiens j en profite pour demander au webmaster si ce serait pas possible d avoir une recherche avec plusieurs mots clés?

chmanu
0
Il ya également une autre solution possible qui consite à inclure les .h (ou au moins un dans ton cas) dans le .cpp et non dans le .h
mais en indiquant au compilateur l'existence de cette classe, en utilisant la syntaxe:

class NomDeTaClasse

Attention cela ne marche que pour des références (pointeurs),pour les aggrégatoins utliser la méthode #define...

Exemple:

class CJoueur

class propriete
{
CJoueur *joueur;
......
}

et dans propriete.cpp -> #include "propriete.h"
0
chmanu > weblook
9 janv. 2002 à 15:47
ok merci, ce que j ai fait reviens au meme,
mais j ai qd meme une (meme deux) questions :
est ce preferable de definir une classe joueur (typedef class Joueur Joueur;)
ou de lui indiquer qu elle est definie ailleur (extern class Joueur Joueur;)
je pencherait pour la deuxieme solution, mais le compilateur ne fait aucune difference.
et sinon, comment je cree le Makefile?
comme ca :
main: main.o joueur.o propriete.o
gcc -o main.o joueur.o propriete.o
main.o: main.cpp joueur.h propriete.h
...
joueur.o: joueur.cpp joueur.h propriete.h
gcc -c joueur.cpp joueur.h propriete.h
propriete.o: propriete.cpp propriete.h joueur.h
gcc -c propriete.cpp propriete.h joueur.h

Y aura pas conflit?
j ai pas essaye, en fait j ai une dizaine de classes et j ai fait comme ca avec la dizaine et ca marche pas alors je voulais savoir si c le principe ou si c a l interieur de mes fichiers qu il y a un pb.

Merci encore
0