Bonjour,

Je suis un peu perdu avec un programme dans lequel j'utilise des vecteurs de pointeurs. Je tente inlassablement de jouer avec les pointeurs depuis des heures, mais je ne trouve pas de solution.

Le programme me sert d'entrainement pour vérifier que j'ai bien retenu mes leçons de c++, il s'agit d'une liste d'ami.
Dans un vecteur j'enregistre des gens : titi, toto etc..
Dans un autre vecteur, j'enregistre les amis de ces gens. (On est ami avec soit même).

J'ai commenté le programme dans le main pour vous expliquer son déroulement. La ligne bloquante est celle où je tente d'accéder au propriété de mon objet Personne.

Merci d'avance pour votre aide et vos indications.


Classe Personne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
#include <string>
 
class Personne {
    public:
    Personne() {}
    Personne(std::string n) : name(n), firstname("") {}
    ~Personne() {}
    std::string name;
    std::string firstname;
};
Classe de liste des amis
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
#include <iostream>
#include <string>
#include <vector>
#include "personne.h"
 
class FriendList {
    public:
    FriendList() {}
    FriendList(std::string n) : name(n) {}
    ~FriendList() {}
    std::string getName();
    void setName(std::string n);
    void FriendList::addPerson(Personne* &p);
    std::vector<Personne**> FriendList::listInvited();
 
    private:
    std::string name;
    std::vector<Personne**> vInvited;
};
 
// Fichier CPP ci-dessous
 
#include "FriendList.h"
 
std::string FriendList::getName(){
    return(name);
}
 
void FriendList::setName(std::string n){
    name = n;
}
 
void FriendList::addPerson(Personne* &p){
    vInvited.push_back(&p);
}
 
std::vector<Personne**> FriendList::listInvited(){
    return(vInvited);
}
Le Main
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
#include <iostream>
#include "personne.h"
#include "FriendList.h"
#include <vector>
 
using namespace std;
 
vector<Personne*> vectorPerson;
vector<FriendList*> vectorFriendList;
 
int main()
{
    Personne p1("toto");
    vectorPerson.push_back(&p1); // une personne toto est ajoutee
 
    FriendList f1("listeDeToto");
    vectorFriendList.push_back(&f1); // la liste de toto est créée
 
    vectorFriendList[0]->addPerson(vectorPerson[0]); // toto est ami avec lui meme
 
    Personne p2("titi");
    vectorPerson.push_back(&p2); // une personne titi est ajoutee
 
    vectorPerson[0]->name = "tutu"; // on renomme titi en tutu
 
    vectorFriendList[0]->addPerson(vectorPerson[1]); // j'ajoute titi a la liste de toto (devenu tutu)
 
 
// le listing des personnes (tutu et titi)
    for(int i=0; i<vectorPerson.size(); i++){
        cout << vectorPerson[i]->name << endl;
    }
 
// le listing des listes dami
    for(int i=0; i<vectorFriendList.size(); i++){
        cout << endl << vectorFriendList[i]->getName() << ":" << endl;
 
        // la liste dami de la personne        
        vector<Personne**> vFriendsDeTutu  = vectorFriendList[i]->listInvited();
        cout << endl << vFriendsDeTutu.size() << " personne dont :" << endl;
        for(int j=0; j<vFriendsDeTutu.size(); j++){
        // plantage ici
        //            cout << *vFriendsDeTutu[j]->name << ":" << endl;
        }
    }
 
    return 0;
}