IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Remplissage Vector c++


Sujet :

C++

  1. #1
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut Remplissage Vector c++
    Bonjour,

    Mon code est le suivant:
    Code C : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    class Auteur{
    	string nom;
    	bool prime;
    	public: Auteur(){
    	}
    	public: Auteur (string n, bool p=false){
    		nom=n;
    		prime=p;
    	}
    	public: string getNom(){
    	return nom;
    	}
    	public:bool getPrix(){
    	return prime;
    	}
    };
    class Oeuvre{
    	public:string titre;
    	Auteur a;
    	string langue;
    	public: Oeuvre(){
    	}
    	public: Oeuvre(string tit, Auteur & aut, string lang){
    	 titre=tit;
    	 a=aut;
    	 langue=lang;}
        public: string getTitre(){
    	return titre;}
    	public: const Auteur getAuteur(){
    	return a;}
    	public: string getLangue(){
    	return langue;}
    	public: void affiche(){
        cout<<titre<<", "<<a.getNom()<<", en "<<langue<<endl;}
        public:~Oeuvre(){
        cout<<"L'oeuvre "<<titre<<", "<<a.getNom()<<", en "<<langue<<" n'est plus disponible."<<endl;}
    };
    class Exemplaire{
    	public: Oeuvre  o;
    	public: Exemplaire()
    	{}
    	Exemplaire(Oeuvre & o){
    		cout<<"Nouvel exemplaire de : "<<o.titre<<", "<<o.a.getNom()<<", en "<<o.langue<<endl;
    	}
    	Exemplaire( Exemplaire & e){
        cout<<"Copie d'un exemplaire de : "<<e.o.titre<<", "<<e.o.a.getNom()<<", en "<<o.langue;}
        public:~Exemplaire(){
    	cout<<"Un exemplaire de "<<o.titre<<", "<<o.a.getNom()<<", en "<<o.langue<<" a été jeté !"<<endl;
    	}
    	public: const Oeuvre getOeuvre(){
    	return o;}
    	public: void affiche(){
        cout<<"Exemplaire de : "<<o.titre<<", "<<o.a.getNom()<<", en "<<o.langue<<endl;
        }
    };
    class Bibliotheque{
    	public: string nom;
    	public:vector<Exemplaire *> exps;
    	public:Bibliotheque(string n){
    		nom=n;
    		cout<<"La bibliothèque "<<nom<<" est ouverte !"<<endl;
    		
    		}
    	public: string getNom(){
    	return nom;}
    	public: void stocker(Oeuvre  &oo, int n=1){
    		int count=1;
    		while (count<=n)
    		{exps.push_back(new Exemplaire( oo));
    		count++;}
    		
    	}
    	public: void lister_exemplaires(string langue=""){
    		int taille=exps.size();
    		if(langue.empty()==true)
    		{ 
    			for (auto & ex : exps) {
    			(*ex).affiche();}
    
    			for(int i(0);i<taille;i++)
    			{
    			Exemplaire e=(*(exps[i]));
    			Oeuvre o=e.getOeuvre();
    		    cout<<endl;
    			}
    		}
    		else {
    			for(int i(0);i<taille;i++)
    			{if(exps[i]->o.langue==langue){
    		     exps[i]->affiche();
    		     cout<<endl;
    		     cout<<"empty False"<<endl;}
    		    }
    		}
    	}
    	
    };
    
    int main()
    {
      Auteur a1("Victor Hugo"),
             a2("Alexandre Dumas"),
             a3("Raymond Queneau", true);
    
      Oeuvre o1("Les Misérables"           , a1, "français" ),
             o2("L'Homme qui rit"          , a1, "français" ),
             o3("Le Comte de Monte-Cristo" , a2, "français" ),
             o4("Zazie dans le métro"      , a3, "français" ),
             o5("The Count of Monte-Cristo", a2, "anglais" );
    
      Bibliotheque biblio("municipale");
      biblio.stocker(o1, 2);
      biblio.stocker(o2);
      biblio.stocker(o3, 3);
      biblio.stocker(o4);
      biblio.stocker(o5);
      
    
      cout << "La bibliothèque " << biblio.getNom()
           << " offre les exemplaires suivants :" << endl;
      biblio.lister_exemplaires();
    
      return 0;
    }

    J'ai un problème au niveau de la fonction "stocker", elle ne fonctionne pas correctement et les objets ne sont pas stockés!
    Lorsque j'appelle " lister_exemplaires", rien ne s'affiche!
    Au lieu d'avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Exemplaire de : Les Misérables, Victor Hugo, en français
    Exemplaire de : Les Misérables, Victor Hugo, en français
    Exemplaire de : L'Homme qui rit, Victor Hugo, en français
    Exemplaire de : Le Comte de Monte-Cristo, Alexandre Dumas, en français
    Exemplaire de : Le Comte de Monte-Cristo, Alexandre Dumas, en français
    Exemplaire de : Le Comte de Monte-Cristo, Alexandre Dumas, en français
    Exemplaire de : Zazie dans le métro, Raymond Queneau, en français
    Exemplaire de : The Count of Monte-Cristo, Alexandre Dumas, en anglais
    J'ai eu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Exemplaire de : , , en 
    Exemplaire de : , , en 
    Exemplaire de : , , en 
    Exemplaire de : , , en 
    Exemplaire de : , , en 
    Exemplaire de : , , en 
    Exemplaire de : , , en 
    Exemplaire de : , , en
    Avez-vous une idée ?
    Merci d'avance pour votre aide.
    La science ne connaît qu'une loi: la contribution scientifique.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Il est faux de dire que rien ne s'affiche : Le bon nombre d’exemplaires s'affiche, mais ces exemplaires sont "vides".
    Regardons donc comment un exemplaire est crée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	Exemplaire(Oeuvre & o){
    		cout<<"Nouvel exemplaire de : "<<o.titre<<", "<<o.a.getNom()<<", en "<<o.langue<<endl;
    	}
    On passe en argument au constructeur d'un exemplaire une œuvre, mais même si on affiche des choses à son sujet, on ne stocke pas sa valeur dans l'exemplaire (le fait que le paramètre du constructeur ait le même nom que la variable membre n'empêche pas qu'il s'agit de deux objets différents).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	Exemplaire(Oeuvre & o) : o(o)
            {
    		cout<<"Nouvel exemplaire de : "<<o.titre<<", "<<o.a.getNom()<<", en "<<o.langue<<endl;
    	}
    Devrait commencer à aller mieux. Mais ce n'est pas très satisfaisant : Chaque exemplaire va créer une copie de l’œuvre, alors que l’œuvre est probablement censée être unique. Et il y a d'autres soucis dans le code (par exemple un constructeur de copie qui affiche des choses, mais ne copie rien). En terme de style, répéter public: devant chaque fonction est peu courant en C++ : On préfère mettre une section pulbique avec tout un ensemble de fonctions à l'intérieur.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut
    D'accord. Merci beaucoup pour votre réponse

    S'il vous plaît, j'ai juste une deuxième question:

    J'ai ajouté le destructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
              ~Bibliotheque(){
    	    cout<<"La bibliothèque "<<nom<<" ferme ses portes,"<<endl;
    	    cout<<"et détruit ses exemplaires :"<<endl;
    	    int taille=exps.size();
    		for(int i(0);i<taille;i++)
    		delete exps[i];
       }
    à la fin de l'exécution, il s'exécute automatiquement et m'affiche:
    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
     
    La bibliothèque municipale ferme ses portes,
    et détruit ses exemplaires :
    Un exemplaire de Les Misérables, Victor Hugo, en français a été jeté !
    L'oeuvre Les Misérables, Victor Hugo, en français n'est plus disponible.
    Un exemplaire de Les Misérables, Victor Hugo, en français a été jeté !
    L'oeuvre Les Misérables, Victor Hugo, en français n'est plus disponible.
    Un exemplaire de L'Homme qui rit, Victor Hugo, en français a été jeté !
    L'oeuvre L'Homme qui rit, Victor Hugo, en français n'est plus disponible.
    Un exemplaire de Le Comte de Monte-Cristo, Alexandre Dumas, en français a été jeté !
    L'oeuvre Le Comte de Monte-Cristo, Alexandre Dumas, en français n'est plus disponible.
    Un exemplaire de Le Comte de Monte-Cristo, Alexandre Dumas, en français a été jeté !
    L'oeuvre Le Comte de Monte-Cristo, Alexandre Dumas, en français n'est plus disponible.
    Un exemplaire de Le Comte de Monte-Cristo, Alexandre Dumas, en français a été jeté !
    L'oeuvre Le Comte de Monte-Cristo, Alexandre Dumas, en français n'est plus disponible.
    Un exemplaire de Zazie dans le métro, Raymond Queneau, en français a été jeté !
    L'oeuvre Zazie dans le métro, Raymond Queneau, en français n'est plus disponible.
    Un exemplaire de The Count of Monte-Cristo, Alexandre Dumas, en anglais a été jeté !
    L'oeuvre The Count of Monte-Cristo, Alexandre Dumas, en anglais n'est plus disponible.
    L'oeuvre The Count of Monte-Cristo, Alexandre Dumas, en anglais n'est plus disponible.
    L'oeuvre Zazie dans le métro, Raymond Queneau, en français n'est plus disponible.
    L'oeuvre Le Comte de Monte-Cristo, Alexandre Dumas, en français n'est plus disponible.
    L'oeuvre L'Homme qui rit, Victor Hugo, en français n'est plus disponible.
    L'oeuvre Les Misérables, Victor Hugo, en français n'est plus disponible.
    Alors que je voudrais avoir ceci:

    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
     
    La bibliothèque municipale ferme ses portes,
    et détruit ses exemplaires : 
    Un exemplaire de "Les Misérables, Victor Hugo, en français" a été jeté !
    Un exemplaire de "Les Misérables, Victor Hugo, en français" a été jeté !
    Un exemplaire de "L'Homme qui rit, Victor Hugo, en français" a été jeté !
    Un exemplaire de "Le Comte de Monte-Cristo, Alexandre Dumas, en français" a été jeté !
    Un exemplaire de "Le Comte de Monte-Cristo, Alexandre Dumas, en français" a été jeté !
    Un exemplaire de "Le Comte de Monte-Cristo, Alexandre Dumas, en français" a été jeté !
    Un exemplaire de "Zazie dans le métro, Raymond Queneau, en français" a été jeté !
    Un exemplaire de "The Count of Monte-Cristo, Alexandre Dumas, en anglais" a été jeté !
    L'oeuvre "The Count of Monte-Cristo, Alexandre Dumas, en anglais" n'est plus disponible.
    L'oeuvre "Zazie dans le métro, Raymond Queneau, en français" n'est plus disponible.
    L'oeuvre "Le Comte de Monte-Cristo, Alexandre Dumas, en français" n'est plus disponible.
    L'oeuvre "L'Homme qui rit, Victor Hugo, en français" n'est plus disponible.
    L'oeuvre "Les Misérables, Victor Hugo, en français" n'est plus disponible.
    Avez-vous une explication, pourquoi j'ai eu des redondances ?
    Merci d'avance.
    Cordialement.
    La science ne connaît qu'une loi: la contribution scientifique.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    C'est lié à ma remarque précédente : Chaque exemplaire stocke une COPIE de l’œuvre, alors même que l’œuvre n'est pas prévue pour être copiable. Je conseillerais par exemple de rendre l’œuvre non copiable (http://cpp.developpez.com/faq/cpp/?p...les_definition), puis en regardant les erreurs de compilation apparaître (c'est instructif pour voir où des copies étaient effectuées).

    Ensuite, il faudra modifier la classe exemplaire, pour qu'elle contienne une référence vers l’œuvre, au lieu d'en contenir une copie.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut
    Bonsoir,
    Merci beaucoup pour votre réponse.

    J'ai rendu l'auteur et l’œuvre non copiables, comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Auteur( const Auteur& other ); // non construction-copyable
    Auteur& operator=( const Auteur& ); // non copyable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Oeuvre( const Oeuvre& other ); // non construction-copyable
    Oeuvre& operator=( const Oeuvre& ); // non copyable
    J'ai changé la classe Exemplaire comme vous m'avez dit:

    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
     
    class Exemplaire{
    	public: Oeuvre & o;
    	/*public: Exemplaire()
    	{}*/
    	Exemplaire(Oeuvre & o):o(o){
    		cout<<"Nouvel exemplaire de : "<<o.titre<<", "<<o.a.getNom()<<", en "<<o.langue<<endl;
    	}
    	Exemplaire( Exemplaire & e){
        cout<<"Copie d'un exemplaire de : "<<e.o.titre<<", "<<e.o.a.getNom()<<", en "<<o.langue;}
        public:~Exemplaire(){
    	cout<<"Un exemplaire de \""<<o.titre<<", "<<o.a.getNom()<<", en "<<o.langue<<"\" a été jeté !"<<endl;
    	}
    	public: const Oeuvre & getOeuvre(){
    	return o;}
    	public: void affiche(){
        cout<<"Exemplaire de : "<<o.titre<<", "<<o.a.getNom()<<", en "<<o.langue<<endl;
        }
    };
    J'ai eu l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    biblio.cc:57:2: erreur: uninitialized reference member 'Exemplaire::o' [-fpermissive]
    au niveau du constructeur de copie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exemplaire( Exemplaire & e)
    J'ai pas su comment l'initialiser ..
    Merci bien pour votre aide
    La science ne connaît qu'une loi: la contribution scientifique.

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut
    D'accord. Merci.
    Le faite de rendre Auteur non copiable m'a généré une erreur au niveau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public: Oeuvre(string tit, Auteur & aut, string lang){
    	 titre=tit;
    	 a=aut;
    	 langue=lang;}
    L'erreur est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    In function `Oeuvre::Oeuvre(std::string, Auteur&, std::string)':
    prog.cpp:(.text._ZN6OeuvreC2ESsR6AuteurSs[_ZN6OeuvreC5ESsR6AuteurSs]+0x3d): undefined reference to `Auteur::operator=(Auteur const&)'
    collect2: error: ld returned 1 exit status
    Je l'ai changé comme suit et ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public: Oeuvre(string tit, Auteur & aut, string lang): a(aut){
    	 titre=tit;
    	 langue=lang;}
    La science ne connaît qu'une loi: la contribution scientifique.

  8. #8
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    En fait, tu devrais faire de même avec tous les membres.
    Dans ce que tu faisais, il y avait trois initialisations par défaut (constructeur sans argument, ou seulement les valeurs par défaut), et trois affectations.

    Ton correctif pour l'auteur est d'utiliser le constructeur de copie, ici auteur(const auteur&)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  9. #9
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut
    Merci beaucoup pour votre aide et pour vos remarques.
    Cordialement.
    La science ne connaît qu'une loi: la contribution scientifique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. remplissage vector de vectort
    Par jamsgoodon dans le forum Débuter
    Réponses: 4
    Dernier message: 25/02/2011, 21h02
  2. Remplissage de DynamicArray par vector
    Par androz dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/06/2009, 22h27
  3. remplissage d'un vecteur de type vector
    Par fatjoe dans le forum C++
    Réponses: 18
    Dernier message: 02/05/2008, 22h08
  4. [Vector] problème de remplissage
    Par Perla_program dans le forum Struts 1
    Réponses: 5
    Dernier message: 03/11/2006, 20h41
  5. Remplissage de vector dans une boucle
    Par anasama dans le forum SL & STL
    Réponses: 6
    Dernier message: 02/01/2006, 09h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo