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

Langage C++ Discussion :

Tableau contenant les noms d'une structure.


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut Tableau contenant les noms d'une structure.
    Bonjour, j'ai un petit problème que je n'arrive pas du tout a résoudre:

    J'ai déclarer une structure dans un header:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct Calculateur
    {
    	char AdresseEmmission;
    	char AdresseReception;
    	char SeedValue; 
    };
    Dans un fichier source je creer les structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calculateur CTR2, CTR3, CSFA, CREH, CDSB, CTCU;
    Je veux creer dans ce fichier source un tableau contenant les différents nom des structure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabnamestruct[6]={CTR2, CTR3, CSFA, CREH, CDSB, CTCU};
    Je ne sais pas du tout comment le creer je veux dire avec quel type car j'ai essayer de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calculateur tabnamestruct[6]={CTR2, CTR3, CSFA, CREH, CDSB, CTCU};
    Mais ça ne fonctionne pas car il s'attend a avoir un tableau de structure or le but de ce tableau et de pouvoir avoir les NOMS des structure pour pouvoir les utiliser dans une boucle facilement.

    Je vous remercie d'avoir lus mon message.
    Et vous souhaite une bonne journée.

  2. #2
    Membre émérite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par défaut
    Bonjour,
    Je ne pense pas avoir compris ce que tu veux faire.

    Je vois une structure, dont le nom est « Calculateur », et des noms de variables.
    Je ne vois pas ce que tu entends par « les NOMS des structure ».

    Et puis, puisque tes structures sont stockées dans un tableau, tu peux les utiliser dans une boucle facilement, je ne vois pas le problème.
    Par contre, vu comment tu les déclarées et stockées, chacune d'entre elles est dupliquée.

  3. #3
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Citation Envoyé par Steph_ng8 Voir le message
    Bonjour,
    Je ne pense pas avoir compris ce que tu veux faire.

    Je vois une structure, dont le nom est « Calculateur », et des noms de variables.
    Je ne vois pas ce que tu entends par « les NOMS des structure ».

    Et puis, puisque tes structures sont stockées dans un tableau, tu peux les utiliser dans une boucle facilement, je ne vois pas le problème.
    Par contre, vu comment tu les déclarées et stockées, chacune d'entre elles est dupliquée.
    Je crois qu'il veut stocker le nom de la variable qui désigne la structure dans un tableau. D'expérience, quand on cherche à faire ça, c'est qu'on ne sait pas trop où on va (et qu'on ne connais pas très bien le C...).

    Que cherches-tu à faire exactement? Tu vas en faire quoi de tes noms de structures? Que se passe-t-il si un autre dev change le nom d'une des variables?

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut
    Dupliquée?
    Enfaite pour les besoins de mon programme j'aurais besoin d'un tableau comprenant les noms des structures seulement:
    Ceque j'appelle nom de structures c'est : CTR2 CTR3,...
    Le problème c'est que si je fait un tableau de structure ça me déclare pour chaque "case" du tableau AdresseEmmission AdresseReception et SeedValue or moi je ne veux que les noms des structures.

    Je ne sais pas si je suis clair.

    Mais en gros dans une boucle pour les besoins de mon programme j'aimerais pour voir utilisé tabname comme 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
    boucle for j
    {
       tabname[j].AdresseEmmission=...;
    }
     
    boucle for j
    {
       tabname[j].Adressereception=...;
    }
     
    boucle for j
    {
       tabname[j].Seedvalue=...;
    }
    Je pense savoir ou je vais ou en tout cas ce que je veux, il y a surement un moyen plus simple de le faire mais je ne trouve pas. Nouvelle en C

  5. #5
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Donc je pense qu'il y a confusion (ou alors je n'ai pas compris ton problème )

    Si tu veux faire ce que tu décris, tu peux stocker un pointeur vers la structure dans ton tableau.


    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
     
    Calculateur* CTR2, *CTR3, *CSFA, *CREH, *CDSB, *CTCU;
    //Les malloc qui vont bien
     
    Calculateur* tabnamestruct[6]={CTR2, CTR3, CSFA, CREH, CDSB, CTCU};
     
    boucle for j
    {
       tabname[j]->AdresseEmmission=...;
    }
     
    boucle for j
    {
       tabname[j]->Adressereception=...;
    }
     
    boucle for j
    {
       tabname[j]->Seedvalue=...;
    }
     
    //les free qui vont bien

    edit: je viens de voir qu'on est dans la section c++... Alors pourquoi ne pas faire... du C++??

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut
    Oui du C++...enfaite mon rpogramme est en C++ mais je confons un peu tout a vrai dire.

    L'autre problème est que ce traitement est seulement pour une fonction et ensuite dans tout le reste du programme j'utilise les structure comme cela par exemple:

    fonction(CTR2.AdresseEmmission;....)

    En les déclarant avec des poiteurs ça va me changer la façon dont je les utilisent dans mon programme n'est ce pas?

    Je suis vraiment désolé si mes questions parraissent bêtes je fais tout pour comprendre.

    en tout cas merci de me répondre.

    Sinon j'ai des erreurs avec ce que j'ai fait de cetype pourtant j'ai fait ce que vous m'avez dit mais ne doi-je pas changer la déclaration de ma structure?:
    C'est cette ligne qui est en cause:
    Calculateur* tabnamestruct[6]={CTR2, CTR3, CSFA, CREH, CDSB, CTCU};code]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    c:\documents and settings\recuperation_calculateursdlg.cpp(423) : e
    rror C2440: 'initializing' : cannot convert from 'struct Calculateur' to 'struct Calculateur *'
            No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

  7. #7
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Mais comment faisais-tu pour passer tes structures aux différentes fonctions? Si ce sont des globales, c'est très maaaaal. Si tu les passes par valeur aussi c'est très maaaal.


    J'explique un peu..

    Les variables dont le scope est global c'est mal dans 99% des cas: on ne sait plus qui fait quoi dessus (et dans le cas de pointeur, si quelque part on le delete, ça va coller un joyeux bazard dans la suite du programme..).

    Le passage par valeur, c'est maaal dans 99% des cas (pour ce type de variables), vu que si ta structure grandit, à chaque appel, tu vas empiler tes structures pour au final avoir des débordement ou des lenteurs.

    Le mieux serait: au début du programme, créer un tableau de pointeurs vers tes structures, faire tes appels en passant en paramètre ton tableau, et à la fin du programme libérer la mémoire allouée.

    Après je réitère, si tu veux faire du C++, tu crées une class Calculateur, tu mets des pointeurs vers tes instances dans un container et tu fais tes calculs dessus.


    J'ai fait une petite erreur dans mon post précédent:
    Calculateur *c1, *c2, ...

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut
    Ce sont en effet des globale.

    Alors je n'ai pas très bien tout compris (je m'en excuse encore...)
    Donc je veux faire du C++.

    J'ai mon programme "main" dans lequel j'appelle certaines fonction qui ont comme paramètre des elements de la structure Calculateur.
    Ex: fonction(CTR2.AdresseEmmission,...)

    Ce que je dois faire c'est creer une classe dans un fichier header calculateur.h:

    class Calculateur{
    Je creer ma structure ici
    Je fais mon traitement avec les structure.
    }

    Mais c'est quoi un container?

  9. #9
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Un container, ben c'est une entité qui en contient d'autres.


    Donc, déjà, dans un .h, il faut que tu décrives ta classe:

    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
     
    #ifndef __CALCULATEUR_H__
    #define __CALCULATEUR_H__
    class Calculateur{
        private:
            //Je vais faire le pari fou que tu veux stocker un peu plus qu'un caractère pour tes membres
           std::string AdresseEmmission;
           //etc...
     
        public:
           //Un constructeur pratique:
           Calculateur(std::string AdresseEmmission, ... etc);
     
           //Conseil: implémenter la forme canonique de Coplien: constructeur, destructeur, constructeur par recopie et opérateur d'affectatio "="
     
          //Les getter/setter
         std::string getAdresseEmmision();
    };
    #endif

    L'implémentation dans un .cpp des différentes méthodes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include "Calculateur.h"
     
    std::string Calculateur::getAdresseEmmision(){
        return AdresseEmmission;
    }
     
    //Et toutes les autres
    Pour utiliser tout ça, tu crées tes instances avec new, tu les mets dans un tableau et une fois finis, tu détruits bien toutes tes instances avec delete.

    Note: le code qu eje te donne est très incomplet et ne compilera pas, exprès pour t'embêter

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut
    Merci bien pour tout!
    Je vais m'y mettre alors!

    Pour être sure d'avoir bien compris en mettant mes instances dans le tableau je pourrais les utiliser dans toutes les fonctions du programme?

  11. #11
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Il faut que la fonction et le tableau soient dans le même scope.

    Pour faire ça, le plus simple c'est de passer ton tableau (qui est en fait un pointeur.. mais je pense que tu n'es pas au point là dessus) à tes fonctions qui pourront bosser dessus.

    Pour te simplifier la vie, utilise un std::vector plutôt qu'un tableau classique:

    std::vector<Calculateur> et dedans, met soit des pointeurs, soit directement des instances (attention à la taille!!)

  12. #12
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut
    Très bien je vais m'y mettre.

    Merci encore.

    Et si j'ai d'autres questions je les poserais ici, si ça ne vous dérange pas d'y répondre...

  13. #13
    Membre émérite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par défaut
    Citation Envoyé par Steph_ng8 Voir le message
    Par contre, vu comment tu les déclarées et stockées, chacune d'entre elles est dupliquée.
    Citation Envoyé par LiaGalanodel Voir le message
    Dupliquée?
    En fait, les deux codes suivants sont (plus ou moins) équivalents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    UnType a, b, c, d;
    UnType tab[] = {a, b, c, d};
     
    //****************//
     
    UnType a, b, c, d;
    UnType tab[4];
    tab[0] = a;
    tab[1] = b;
    tab[2] = c;
    tab[3] = d;
    Autrement dit, on passe les variables par valeur au constructeur du tableau.
    Et qui dit passage par valeur dit copie, et donc duplication.

    Ça veut dire également qui si plus tard on modifie par exemple b, tab[1] ne sera pas modifié, et réciproquement.

    En utilisant un tableau de pointeurs sur la structure, comme l'a proposé seeme, on évite d'avoir deux instances du même objet.
    En effet, dans ce cas, c'est la valeur du pointeur qui est copié, donc l'adresse des données pointées, et pas les données elles-mêmes.

    Pour ce qui est des boucles, c'est trivial.
    Les codes suivants sont tout à fait valides et fonctionnels (taille est la taille du tableau) :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Calculateur tabnamestruct[] = {...};
    (...)
    for (int j = 0; j < taille; ++j) {
        tabnamestruct[j].AdresseEmmission = ...;
        (...)
    }
     
    for (int j = 0; j < taille; ++j) {
        tabnamestruct[j].AdresseReception = ...;
        (...)
    }
     
    for (int j = 0; j < taille; ++j) {
        tabnamestruct[j].SeedValue = ...;
        (...)
    }
     
    //*****************************//
     
    Calculateur *tabnamestruct[] = {...};
    (...)
    for (int j = 0; j < taille; ++j) {
        tabnamestruct[j]->AdresseEmmission = ...;
        (...)
    }
     
    for (int j = 0; j < taille; ++j) {
        tabnamestruct[j]->AdresseReception = ...;
        (...)
    }
     
    for (int j = 0; j < taille; ++j) {
        tabnamestruct[j]->SeedValue = ...;
        (...)
    }

  14. #14
    Membre émérite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par défaut
    Citation Envoyé par LiaGalanodel Voir le message
    Ceque j'appelle nom de structures c'est : CTR2 CTR3,...
    Attention, CTR2 est une variable de type Calculateur, et dont le nom est (la chaîne de caractères) « CTR2 ».
    Il n'y a qu'un seul nom de structure, et c'est (la chaîne de caractères) « Calculateur ».

    Je pense que tu parles plutôt soit des variables, soit du nom des variables.
    Si tu veux stocker les variables dans un tableau, c'est ce qui est écrit depuis le début.
    Si tu veux stocker leur nom, c'est quelque chose comme ça qu'il faudrait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * tabstructname[] = {"CTR2", "CTR3", ...};
    Seulement, à ma connaissance, on ne peut pas accéder au contenu d'une variable à partir de son nom en C/C++ (en PHP par exemple, on peut).

    Edit: Enfin si, on peut peut-être. Mais ce n'est pas du tout trivial, et d'après ce que j'ai compris, pas portable.

  15. #15
    Membre émérite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par défaut
    Sinon, une classe ce n'est pas beaucoup plus compliqué qu'une structure, sauf qu'on peut déclarer (voire définir) des fonctions (membres) directement dans le corps de la classe.
    Bon, en réalité, en C++ les mots-clés « class » et « struct » sont quasiment équivalents, mais on ne va pas entrer dans les détails…

    Si ce n'est pas déjà fait, tu devrais aller faire un tour dans la FAQ pour avoir plus d'informations sur la manière d'écrire le code d'une classe, ou sur les containers (en français, conteneurs).

    En parlant de conteneur, puisque tu dois y stocker tes objets, pourquoi ne pas l'utiliser partout dans ton code, et ne pas t'embêter avec de multiples variables ?
    On peut accéder aux objets stockés à l'aide de l'opérateur [] (à condition de bien savoir ce que l'on fait) ou des fonctions d'accès (at pour std::vector), tant en lecture qu'en écriture.
    Enfin si le conteneur est déclaré constant, c'est râpé pour l'écriture.

    Si tu as absolument besoin de noms explicites, tu peux créer une variable qui pointe sur l'élément stocké dans le conteneur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <vector>
     
    (...)
     
    std::vector<Calculateur> tab;
    // Remplissage du vecteur
    tab.push_back(...);
     
    (...)
     
    Calculateur & CTR2 = tab[0];
    // Ou, si tu n'es pas à l'aise avec les références :
    Calculateur * CTR2 = &tab[0];
    // Et ainsi de suite...

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je vais rebondir sur ce qu'a expliqué Steph.
    Il faut distinguer "Non de structure" et "Valeur d'un membre de structure".
    Dans le premier bout de code
    Code :

    struct Calculateur
    {
    char AdresseEmmission;
    char AdresseReception;
    char SeedValue;
    };
    les membres AdresseEmission etc sont de char
    Un char est un type sur 8 bits, c'est à dire qu'il peut contenir 1 caractère, et c'est tout.
    La dimension de la structure Calculateur est donc de 3 octets.
    Si j'avais un conseil à donner, ce serait de définir ce qu'on veut faire avant d'écrire la moindre ligne de code. Le terme "structure" étant directement lié au code, il ne devra pas être utilisé dans la description de ce qu'il faut faire.

  17. #17
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut
    Bon j'ai encore un souci dans mon programme mais ça n'a rien a voir avec cette question là.

    Merci a vous deux! Vous m'avez vraiment bien aidé!
    Et j'ai réussis a faire fonctionner cette partie du programme.

    Je suis vraiment contente (d'avoir en plus compris ce que j'ai fait).

    Merci de votre patiente et je vous souhaite une bonne après midi et bonne continuation!

  18. #18
    Membre émérite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par défaut
    Pas de quoi.
    Bon week-end.

  19. #19
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut
    Bonjour désolé de vous déranger encore mais il y a quelque chose dont je ne suis pas sure.
    DANS MES HEADER:
    J'ai deux class qui sont dans un fichier différents:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Une classe Crecup {
    //Différente fontion et variable
    public:
    int calculo;
    }
    Et dans l'autre fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class CalculateurXPATH{
    //Différentes fonctions
    public:
    unsigned long getAdresseEmmission();
    }
    DANS MES SOURCESJ'aimerais pouvoir utiliser la vriable calculateur dans la fonction getAdresseEmmission();

    Y-a t'il unmoyen de le faire?

  20. #20
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    De quelle variable Calculateur parles-tu? Il n'y en a pas de déclaré dans tes headers.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/04/2008, 11h39
  2. Réponses: 2
    Dernier message: 04/04/2008, 12h54
  3. [MySQL] remplir un tableau avec les noms des champs d'une table
    Par solidaritok dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/04/2007, 13h47
  4. [SQL] problème de variable tableau PHP contenant les données d'une jointure SQL
    Par Schpountz42 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/02/2007, 05h59
  5. Récupérer les élements d'une structure ...
    Par Franck.H dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 17/10/2005, 15h48

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