Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

classes trop dépendantes

2 réponses
Avatar
Gregorydupres
Bonsoir,

J'ai un soucis tout b=EAte qui a surement d=E9j=E0 =E9t=E9 rencontr=E9 (et
r=E9solu). J'ai deux classes dans deux fichiers diff=E9rents, dans
classe1.h :

#include "classe2.h"

class classe1
{
classe2 *pointeur_classe2;
};

dans l'autre fichier , classe2.h j'ai :

#include "classe1.h"

class classe2
{
classe1 *pointeur_classe1;
};

Bien s=FBr je sch=E9matise, les classes sont en r=E9alit=E9 bien plus
fournies. Je voudrais savoir ce qu'il faut modifier pour que =E7a
compile, j'ai deja essay=E9 avec des #ifndef _CLASSE1_ etc.. =E7a compile
toujours pas. Merci Beaucoup.

-- Gregory

2 réponses

Avatar
Loïc Joly
#include "classe1.h"

class classe2
{
classe1 *pointeur_classe1;
};

Bien sûr je schématise, les classes sont en réalité bien plus
fournies. Je voudrais savoir ce qu'il faut modifier pour que ça
compile, j'ai deja essayé avec des #ifndef _CLASSE1_ etc.. ça compile
toujours pas. Merci Beaucoup.


Il faut les include guards, c'est une première étape. Ensuite, pour
déclarer un pointeur sur classe1, tu n'as pas besoin de connaître toute
la définition de classe1. Il suffit que le compilateur sache que classe1
est une classe. On l'indique à l'aide d'une déclaration de classe1 sans
définition associée :


// #include "classe1.h" // Pas nécessaire ici

class classe1; // Déclaration sans définition

class classe2
{
classe1 *pointeur_classe1;
};

--
Loïc

Avatar
Gregorydupres
On 3 nov, 01:16, Loïc Joly wrote:

#include "classe1.h"

class classe2
{
classe1 *pointeur_classe1;
};

Bien sûr je schématise, les classes sont en réalité bien plus
fournies. Je voudrais savoir ce qu'il faut modifier pour que ça
compile, j'ai deja essayé avec des #ifndef _CLASSE1_ etc.. ça comp ile
toujours pas. Merci Beaucoup.


Il faut les include guards, c'est une première étape. Ensuite, pour
déclarer un pointeur sur classe1, tu n'as pas besoin de connaître tou te
la définition de classe1. Il suffit que le compilateur sache que classe1
est une classe. On l'indique à l'aide d'une déclaration de classe1 sa ns
définition associée :

// #include "classe1.h" // Pas nécessaire ici

class classe1; // Déclaration sans définition

class classe2
{
classe1 *pointeur_classe1;

};

--
Loïc


Ok ça marche merci beaucoup.

-- Gregory