OVH Cloud OVH Cloud

Pb compilation POO

1 réponse
Avatar
ben.christophe
Bonjour,


J'ai une erreur à la compilation d'un prg sous vc++:
"warning C4182: #include nesting level is 363 deep; possible infinite
recursion
fatal error C1076: compiler limit : internal heap limit reached; use
/Zm to specify a higher limit"


En Voici le principe, j'ai 2 classes A et B, chacune de ces 2 classes
fait référence à l'autre (association (1,1)) :

// Fichier A.h
#include "B.h"
Class A
{
B * ptr;
...
}


// Fichier B.h
#include "A.h"
Class B
{
A * ptr;
...
}

Quelqu'un aurait-il une solution à me proposer ?


Merci d'avance

1 réponse

Avatar
Rémy
"BCH" a écrit dans le message de
news:
Bonjour,


J'ai une erreur à la compilation d'un prg sous vc++:
"warning C4182: #include nesting level is 363 deep; possible infinite
recursion
fatal error C1076: compiler limit : internal heap limit reached; use
/Zm to specify a higher limit"


En Voici le principe, j'ai 2 classes A et B, chacune de ces 2 classes
fait référence à l'autre (association (1,1)) :

// Fichier A.h
#include "B.h"
Class A
{
B * ptr;
...
}


// Fichier B.h
#include "A.h"
Class B
{
A * ptr;
...
}

Quelqu'un aurait-il une solution à me proposer ?


Merci d'avance


Tout d'abord, il faut protéger les fichiers .h contre les inclusions
multiples:

dans X.h, on met

#ifndef __X
#define __X

code de X.h
...

#endif


Par ailleurs, lorsqu'on utilise seulement un pointeur, on se contente de la
déclaration de la classe:

// Fichier A.h
class B;
class A
{
B * ptr;
...
}

Rémy