Bonjour
j'essaye en vain de créer un tableau dynamique qui contient des pointeurs sur des objets.
J'ai une classeA qui contient un tableau dynamique de pointeur sur des classeB.
ClasseA.h
ClasseA.cpp
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 #include <stdio.h> #include <stdlib.h> #include <string> #include <iostream> #include "ClasseB.h" using namespace std; class ClasseA{ public: ClasseB* tab[]; int i; ClasseA(int nb); void ajouter(ClasseB *cB); };
ClasseB.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "ClasseA.h" ClasseA::ClasseA(int nb){ i = 0; *tab = new ClasseB[nb]; } void ClasseA::ajouter(ClasseB *cB){ cout<<"i="<<i<<endl; tab[0] = cB; i++; }
ClasseB.cpp
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 #include <stdio.h> #include <stdlib.h> #include <string> #include <iostream> using namespace std; class ClasseB{ public: int numero; string nom; ClasseB(int nu, string n):numero(nu), nom(n){} ClasseB(); };
Main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include "ClasseB.h" ClasseB::ClasseB(){ numero = 99; nom = "rien"; }
Quand jaffiche la variable i apres la creation de cA je nobtiens pas la valeur 0 que je devrais avoir, j'obtiens un nombre au hasard.
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 #include "ClasseA.h" int main(int Argc, char **Argv){ ClasseA cA = ClasseA(10); cout<<"i="<<cA.i<<endl; ClasseB *cB1 = new ClasseB(1, "toto1"); ClasseB *cB2 = new ClasseB(2, "toto2"); ClasseB *cB3 = new ClasseB(3, "toto3"); cA.ajouter(cB1); cA.ajouter(cB2); cA.ajouter(cB3); /*for(int i = 0; i<10; i++){ cout<<"indice = "<<i<<" Nom="<<(cA.tab[i])->nom<<endl; cout<<"Numero="<<(cA.tab[i])->numero<<endl; }*/ return 1; }
J'obtiens une erreur de segmentation car la variable i vaut n'importe quoi.
Qu'est ce qui cloche?
Merci.
Partager