17 Contact::Contact(
const Personne& Proprietaire): Proprietaire{Proprietaire} {
18 cout <<
"Contact créé " << Proprietaire <<
"\n";
21 const Personne& Contact::getProprio()
const {
22 return this->Proprietaire;
25 bool Contact::ajouterContact(
const Personne& unContact){
26 if(lesContacts.empty()){
27 cout <<
"Contact ajouté " << unContact <<
"\n";
28 lesContacts.push_back(&unContact);
31 if(unContact==Proprietaire)
33 cout <<
"Erreur : Contact déjà existant (Proprietaire)\n";
36 list<const Personne*>::iterator it = find(lesContacts.begin(), lesContacts.end(), &unContact);
37 if(it!=lesContacts.end()){
38 cout <<
"Erreur : Personne déjà dans vos contacts : " << unContact <<
"\n";
42 cout <<
"Contact ajouté " << unContact <<
"\n";
43 lesContacts.push_back(&unContact);
49 bool Contact::rechercher(
const Personne& unContact){
50 list<const Personne*>::iterator it = find(lesContacts.begin(), lesContacts.end(),&unContact);
51 if(it != lesContacts.end())
53 cout <<
"trouvé : " << unContact <<
"\n";
58 cout <<
"pas trouvé\n";
64 bool Contact::supprimerContact(
const Personne& unContact){
65 list<const Personne*>::iterator it = find(lesContacts.begin(), lesContacts.end(), &unContact);
66 if(it!=lesContacts.end()){
67 lesContacts.erase(it);
68 cout <<
"Contact " << unContact <<
" supprimé\n";
72 cout <<
"Erreur : le contact n'existe pas\n";
77 void Contact::afficherContactDirect() {
78 cout <<
" Les contacts directs de " << this->Proprietaire <<
" sont : ";
79 for(list<const Personne*>::const_iterator it = lesContacts.cbegin(); it != lesContacts.cend(); ++it){
80 if(it==lesContacts.cbegin())
88 void Contact::Recursive(list<Contact*> Contacts, set<const Personne*>*
set) {
93 for(
Contact* contact : Contacts) {
94 if(*
Personne == contact->getProprio()) {
95 contact->Recursive(Contacts,
set);
101 void Contact::afficherContactIndirect(list<Contact*> Contacts) {
102 cout <<
" Les contacts directs et indirects de " << this->Proprietaire <<
" sont : ";
103 set<const Personne*> lesPersonnes{};
104 Recursive(Contacts,&lesPersonnes);
110 ostream& reseau::operator<<(ostream& os,
Personne p){
111 return os << p.getPrenom();
115 if(p1.getPrenom()==p2.getPrenom())