Bonjour

Jai un soucis , pouvez vous maider , je vous laisse voir le code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
 
 
//main:
 
ALAN *Mon_Alan;
AL *Mon_Al;
AN *Mon_An;
 
Mon_Alan = new ALAN;
Mon_Al = new AL;
Mon_An = new AN;
 
 
//les classes :
 
class M
{
        public :
                M(){};
                ~M(){};
};
 
// M est la mère de ALAN !!!
// or ALAN est relié a R et P par compo bi et directionnelle ... 
 
class ALAN: public M
{
        private :
        // pas visible par les fils !!!
                R*m_pt_r;
                P*m_pt_p;
        public :
                ALAN();
                ~ALAN();
};
 
 
ALAN:: ALAN()
{
        m_pt_r= new R;
        m_pt_r->set_m_pt_alan(this);
        m_pt_p = new P;
}
ALAN:: ~ALAN()
{
}
 
 
// et ALAN est la mère de AL et AN 
 
class AN : public ALAN
{
        public :
                AN(){};
                ~AN{}();
};
class AL : public ALAN
{
        public :
                AL(){};
                ~AL(){};
};
 
 
class P
{
        public :
                P(){};
                ~P(){};
};
class R
{
        protected :
                ALAN*m_pt_alan;
                bool m_instanciation;
        public :
                R();
                ~R();
                void set_m_pt_alan(ALAN*);
                bool Tester_Instanciation();
                bool Tester_Bidirection();
};
R:: R()
{
        m_pt_alan = 0;
        m_instanciation = true;
}
R:: ~R()
{
        m_instanciation = false;
}
void R:: set_m_pt_alan(ALAN*m_pt_alan)
{
        if (Tester_Instanciation() ==1 && Tester_Bidirection() ==0)
        {
                this->m_pt_alan=m_pt_alan;
        }
}
bool R:: Tester_Bidirection()
{
        bool test = false;
        if (m_pt_alan != 0 ) test = true;
        return test;
}
bool R:: Tester_Instanciation()
{
        bool test = false;
        if ( m_instanciation != 0 ) test = true;
        return test;
}


ALAN crée R et P ok !!!
Le main crée ensuite ses filles , AL et AN , et le problème , c'est que en fait à la construction de celle-ci le contructeur de M puis ALAN sont appellés ce qui provoque lappel celui de R voila le probleme ...

Comment eviter ca ?
Qu'estce qui ne va pas dans mon code et/ou mes relations ?

Merci par avance ... je bug complet sur le sujet