Créer un tableau dynamique de pointeur
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
Code:
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);
}; |
ClasseA.cpp
Code:
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.h
Code:
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();
}; |
ClasseB.cpp
Code:
1 2 3 4 5 6 7
| #include "ClasseB.h"
ClasseB::ClasseB(){
numero = 99;
nom = "rien";
} |
Main.cpp
Code:
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;
} |
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.
J'obtiens une erreur de segmentation car la variable i vaut n'importe quoi.
Qu'est ce qui cloche?
Merci.