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 :

assignment from incompatible pointer type


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Octobre 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 18
    Par défaut assignment from incompatible pointer type
    Salut ,J'ai un petit problème avec cette structure:
    Code :
    avec int *data;
    double value;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     data=&example[0][0].value;
    	 XSynth_top_Write_example_0_value_Words(&synth_linear,0, data, 2048) ;

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,
    Tu essayes litérallement de faire pointer un int sur un double.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double v;
    int* d = &v;
    Est bien entendu totalement faux.
    Comment t'es-tu retrouvé dans cet état ?
    D'où sors-tu cette syntaxe et assignation ?
    Quel est le but de ce truc ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typedef struct feature {
       int id;
       double value;
    et le l' exemple est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feature example[NUM_EXAMPLES][MAX_NUM_OF_FEATURES_PER_EXAMPLE];
    je veux faire un pointeur sur id et sa marche correctement puis je suis entrain de faire un pointeur sur "la value"
    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data=&example[0][0].id;
    	 XSynth_top_Write_example_0_id_Words(&synth_linear, 0,  data, 1024) ;
    //
       	 data=&example[0][0].value;
    	 XSynth_top_Write_example_0_value_Words(&synth_linear,0, data, 2048) ;

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Si tu veux pointer sur un double, il te faut un pointeur sur un.. double. double*
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 18
    Par défaut
    c-à-d c'est impossible comme ça et comment je peux corriger?

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par aycha mabrouk Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data=&example[0][0].id;
    	 XSynth_top_Write_example_0_id_Words(&synth_linear, 0,  data, 1024) ;
    //
       	 data=&example[0][0].value;
    	 XSynth_top_Write_example_0_value_Words(&synth_linear,0, data, 2048) ;
    c-à-d c'est impossible comme ça et comment je peux corriger?
    Bonjour

    Tu as deux adresses sur deux types différents, il te faut deux pointeurs
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int *data_int;
    double *data_dbl;
    data_int=&example[0][0].id;
    XSynth_top_Write_example_0_id_Words(&synth_linear, 0,  data_int, 1024) ;
    //
    data_dbl=&example[0][0].value;
    XSynth_top_Write_example_0_value_Words(&synth_linear,0, data_dbl, 2048) ;

    Ou alors tu utilises un pointeur mais universel et ensuite tu précises son type d'utilisation au moment où tu t'en sers.
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void *data;
    data=&example[0][0].id;
    XSynth_top_Write_example_0_id_Words(&synth_linear, 0,  (int*)data /* A ce moment il contient l'adresse d'un entier */, 1024) ;
    //
    data=&example[0][0].value;
    XSynth_top_Write_example_0_value_Words(&synth_linear,0, (double*)data /* A ce moment il contient l'adresse d'un double */, 2048) ;

    Quoique, à la réflexion, je ne suis même pas certain que le cast soit obligatoire. Si la fonction XSynth_top_Write_example_0_id_Words attend un pointeur sur int en 3° paramètre, alors lui passer "data" tel quel fonctionnera grace au cast implicite. Et même remarque concernant XSynth_top_Write_example_0_value_Words. Mais bon, c'est plus parlant si tu le laisses...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. incompatible pointer types assigning to.
    Par mahaaaa dans le forum Débuter
    Réponses: 3
    Dernier message: 27/05/2017, 11h35
  2. Réponses: 11
    Dernier message: 13/04/2017, 14h43
  3. Réponses: 15
    Dernier message: 21/01/2009, 15h21
  4. Incompatible pointer type
    Par Spinoza23 dans le forum Débuter
    Réponses: 12
    Dernier message: 27/05/2008, 15h34
  5. Réponses: 9
    Dernier message: 21/10/2006, 13h38

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