#ifndef CONTACT3_hpp
#define CONTACT3_hpp
#include<list>
#include<iostream>
#include<set>

#include "Personne3.hpp"

namespace reseau2{
	class Contact {
	public:
		virtual std::list<const Personne*> getValue() = 0;
		virtual void ajtContact(const Personne& p) = 0;
		virtual ~Contact() = default;
	};

	class ListeContact : public Contact {
		std::list<const Personne*> personnes;
	public:
		std::list<const Personne*> getValue() override;
		void ajtContact(const Personne& p) override;
	};

	class LiaisonPersonne {
		const Personne* envoyeur;
		const Personne* destinataire;
	public:
		LiaisonPersonne(const Personne *envoyeur, const Personne *destinataire);
		const Personne *getEnvoyeur() const;
		const Personne *getDestinataire() const;
	};

	class Conteneur : public Contact {
		Personne* pers;
		std::list<LiaisonPersonne> personnes;
	public:
		Conteneur(Personne *pers);
		std::list<const Personne*> getValue() override;
		void ajtContact(const Personne& p) override;
	};
}

#endif
