j'ai la classe graphe.h suivant :
J'arrive à coder le constructeur par défaut ainsi que le destructeur mais j'ai trouvé des problèmes avec le constructeur de copie. Svp aidez moi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Graphe { private : vector<Noeud*> vecNoeuds; int numNoeud ; Lien** matLiens; public : Graphe(); Graphe(const Graphe&); ~Graphe(); int getNbNoeuds(); };
code constructeur par défaut :
code destructeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Graphe::Graphe() { numNoeud = 0; matLiens = new Lien* [getNbNoeuds()]; for(int i=0; i<getNbNoeuds(); i++) { matLiens[i] = new Lien[getNbNoeuds()]; } }
Remarque :
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 Graphe::~Graphe() { for(int i=0 ; i < getNbNoeuds() ; i++) delete vecNoeuds[i]; vecNoeuds.clear(); for(int i = 0;i < getNbNoeuds() ;i++) {delete [] matLiens[i];} delete [] matLiens; }
Dans les deux codes précédant getNbNoeuds() c'est une méthode qui retourne les nombres des noeuds. Autrement, c'est la taille du vecteur vecNoeuds. Est il possible de l'utiliser dans les constructeurs et le destructeurs pour construire la matrice qui a pour taille (nbNoeuds*nbNoeuds)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int Graphe::getNbNoeuds() { return this->vecNoeuds.size(); }
Partager