Problème de classes

mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012 - 15 sept. 2009 à 17:39
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012 - 16 sept. 2009 à 16:11
Bonjour à tous

Voici mon problème,
je dispose de classes une classe jeu et une classe communication.
La classe jeu gère toute les actions du jeu et la classe communication se charge de la transmission d'information entre plusieur jeux.
Le soucis et que j'ai besoin d'avoir un pointeur sur la classe jeu(A) dans la classe communication(B) ainsi qu'une instance de la classe B dans la A, mais à la compilatoin ça pose problème.

Y-a-t'il moyen de "tricher" pour quand même avoir ces pointeurs. Ou il faut que je revoit mon architecture ?

4 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
15 sept. 2009 à 17:52
c'est possible d'utiliser des pointeurs avant la définition de la classe, il faut simplement la déclarer :


class A;

class B
{
A*a;
...
};

class A
{
B b;
...
};
0
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
15 sept. 2009 à 21:28
Salut,
Oui oui sa je sais il n'y à pas de soucis la dessus, j'ai mal du m'exprimer.

j'ai mes deux classes qui sont définies par un fichier .h et un fichier .cpp
Et il me faudrait faire quelque chose comme ça :

#include "B.h"

class A
{
B *b;
}

et ceux dans mon fichier A.cpp

et puis :

#include "A.h"

class B
{
A *a;
}

dans mon fichier B.cpp.

Mais à la compilation ça plante !!

Il est là le problème...
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
15 sept. 2009 à 22:08
C'est normal. Tu ne dois pas mélanger prédéclaration et include.
Soit tu fais un #include "B.hh", soit tu fais un "class B;".
Mais pas les deux. En revanche, dans le .cc, tu dois absolument mettre l'include tout le temps pour que le compilo ait le code. Seul le header peut se passer du code, vu que c'est juste de la description.

Exemple:

Dans A.hh tu mets:

// Pas d'include de B.hh
class B;

class A
{
...
};

Dans B.hh tu mets:

#include "A.hh"

class B
{
...
};

Dans A.cc tu mets:
#include "B.hh"

Dans B.cc tu mets:
#include "A.hh"

Voilà !
0
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
16 sept. 2009 à 16:11
Salut

Merci pour ton message je cromprend tout à fait mon erreur, et d'ailleur je pense qu'il n'est pas utile de mettre le #include "A.h" dans la fichier "B.cpp" etant donné qu'on l'a déjà ajouté dans le fichier "B.h"

Merci.
0
Rejoignez-nous