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
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 #include <string> class Personne { public: Personne() {} Personne(std::string n) : name(n), firstname("") {} ~Personne() {} std::string name; std::string firstname; };
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 #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); }
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; }
Partager