#include <iostream>
#include <Personne.h>
#include <Date.h>

using namespace std;

// On doit passer les personnes par adresse &
void Marier(Personne &a, Personne &b)
{
    a.epouse(b);
    b.epouse(a);
}

int main()
{
    Personne phil( "Philippe Durant" ) ;
    std::string nom = phil.getNom() ;
    cout << "Saisissez un nouveau nom pour " << nom << ": " ;
    std::string nouveauNom = "";
    cin >> nouveauNom;
    phil.setNom( nouveauNom ) ;
    cout << "Nouveau nom de Philippe: " << phil.getNom() << endl;

    // L'attribut utilisé pour représenter le nom est supprimé lors de la destruction de phil

    // Nouvelle personne : Philippe Durant, né le 10/01/1979
    Personne phil2("Philippe Durant", 10, 1, 1979);
    int age = phil2.getAge(); // récupère l’âge de philippe
    cout << phil2.getNom() << " a " << age << " ans. " << endl;

    /*phil2.setConjoint(phil);
    cout << phil2.getConjoint()->getNom() << endl;*/

    Personne phil_mari( "Philippe Durant", 10, 2, 1978 );
    Personne elo_femme( "Élodie Dupond", 2, 5, 1979 );
    Marier(phil_mari,elo_femme);

    cout << "Nom du conjoint de Phil" << endl;
    cout << phil_mari.getConjoint()->getNom() << endl;

    // Ici on a besoin du constructeur de copie
    Personne philippe( "Philippe Durant", 10, 2, 1977 ) ;
    // Philippe Durant né le 10/2/1977
    Personne albert( "Albert Gontrand", 24, 8, 1907 ) ;
    // Albert Gontrand né le 24/8/1907
    albert = philippe ; // on tente une réincarnation

    cout << "Nom d'Albert apres albert=philippe" << endl;
    cout << albert.getNom() << endl;

    return 0;
}
