#include "Personne.h" // On rappelle les définitions.



Personne::Personne(std::string n, std::string pn) {
  // n et pn sont des copies des arguments. Ils seront détruits à la fin.

  nom = new std::string(n); // il y a le bon constructeur dans string pour faire ca.
  prenom = new std::string(pn);

  // destruction implicite de n et pn
}

Personne::~Personne(void) {
  // Lors de la destruction d'une instance de personne, il faut nous
  // débarasser de la mémoire qu'on avait alloué à sa construction.
  delete nom;
  delete prenom;
}


void Personne::ListeAttributs(std::list<std::string*>& attr) {
  // attr n'est pas une copie, c'est une référence. 
  std::string* s;
  
  s = new std::string("nom = ");
 
  // Les opérateurs sur les strings travaillent avec des string&, donc
  // on utilise *s, cf le tutorial.
  *s += *nom;

  attr.push_back(s);


  s = new std::string("prenom = ");
  *s += *prenom;
  attr.push_back(s);

  // la liste n'est pas détruite en sortie car c'est une référence.
}