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 :

type void* dans une structure


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [Resolu] type void* dans une structure
    Salut j'ai la structure suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct Par
    { 
    int id;
    char *comment;
    void *Value;
    struct Par *pSuivant;
    }Parametre;
    typedef Parametre *ParTab;

    Ensuite j'ai une fonction pour ajouté des éléments à cette liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ParTab* ParCreate(char *comment,void *Value)
    {
    	...
                    ParCurrent->Value = Value;
                    ...
    }
    Le faite de mettre un type void * dans ma structure et ma fonction de création me permet de spécifier une value de type différents pour chaque élément de ma structure.

    Ainsi pour l'éxecution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int p1=345;
    ParCreate("p1",&p1);
    Lorsque je fait un Debug et que je regarde ma structure je retrouve bien le pointeur &p1

    Mais je n'arrive pas à récupérer la valeur p1

    Avez vous une idée? je suis sur msn!!!

  2. #2
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    J'avais eu le même problème une fois.
    Il me semble qu'il faut caster dans ta fonction "value" avec (int*) pour un int (pl) ... Mais pour connaitre le type, je ne sais plus comment on fait. Soit tu crées un troisème argument dans lequel tu mets le type de la variable, soit il existe une méthode à la C++ (je crois) qui consiste à créer une même fonction mais en plusieurs exemplaire avec les types int puis une autre avec float, une autre avec char, une autre avec double, etc...
    Le programme choisira la fonction qu'il faut en fonction du type passé en argument. A confirmer.

    Nas'

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    bon je vais tenter la technique avec le type en argument et je vous dit

    merci Nas'

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    bien vu j'ai trouvé grâce à toi Nasky

    il faut appeller le pointeur de la manière suivante

    *(type*)struct->champ

    on récupère alors la valeur donc il faut connaître le type je vais donc le mettre en argument dans ma fonction

    je vais ensuite faire une fonction pour récupéré la value en fonction du type.

    si y en a qui veulent la soluce complète demandé la par mail ou msn je là mettrai

    Encore merci à toi Nasky

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

Discussions similaires

  1. [Débutant] Cacher les sous-type de données dans une structure
    Par Invité dans le forum VB.NET
    Réponses: 0
    Dernier message: 19/07/2014, 20h25
  2. Réponses: 1
    Dernier message: 09/05/2012, 10h39
  3. Réponses: 4
    Dernier message: 22/12/2011, 16h54
  4. Réponses: 4
    Dernier message: 19/11/2011, 20h53
  5. Réponses: 7
    Dernier message: 01/08/2006, 18h06

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