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 :

C->C++ : problème de cast


Sujet :

C++

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut C->C++ : problème de cast
    Bonjour, j'ai passé un programme C vers C++ et j'obtient une erreur au niveau de cette ligne :


    pstActe = pvSTS8_malloc( sizeof( T_ActeCTIP ) );
    L'erreur est la suivante :
    error C2440: '=' : cannot convert from 'void *' to 'T_ActeCTIP *'
    Conversion from 'void*' to pointer to non-'void' requires an explicit cast
    J'aimerai savoir vers quel code je dois mettre pour corriger le problème sachant que ma fonction pvSTS8_malloc est la suivante :

    void* pvSTS8_malloc (size_t iTaille)
    {
    void* pvTmp;

    if ((pvTmp = malloc(iTaille)) != NULL)
    {
    memset(pvTmp, 0, iTaille);
    ulG8NbAlloc++;
    }
    else
    ulG8NbAllocErr++;

    return pvTmp;
    }
    merci,

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    un static_cast

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    pstActe = pvSTS8_malloc( sizeof( T_ActeCTIP ) );
    sachant que :

    T_ActeCTIP* pstActe;
    je peux faire :

    pstActe=(T_ActeCTIP *) pvSTS8_malloc( sizeof( T_ActeCTIP ) ); non ?

  4. #4
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    C'est un cast C.
    En C++,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static_cast<T_ActeCTIP> ....
    Tout simplement !

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Non, ça, c'est du C
    Un static_cast, c'est ce que tu dois utiliser.

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    ça ca marche :
    pstActe=(T_ActeCTIP *) pvSTS8_malloc( sizeof( T_ActeCTIP ) ); non ?
    référence : http://www.winprog.org/tutorial/errors.html

    merci ^^

  7. #7
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par FamiDoo
    ça ca marche :


    référence : http://www.winprog.org/tutorial/errors.html

    merci ^^
    Mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pstActe=static_cast<T_ActeCTIP *> pvSTS8_malloc( sizeof( T_ActeCTIP ) );
    EN C++

  8. #8
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    Ok, merci les gars, vous êtes rapide en plus

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par FamiDoo
    ça ca marche :


    référence : http://www.winprog.org/tutorial/errors.html

    merci ^^
    Toutes ces histoires de cast sont indiquées dans la FAQ C++

  10. #10
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    Toutes ces histoires de cast sont indiquées dans la FAQ C++
    exact mais je ne pensais pas résoudre le problème de cette façon

  11. #11
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Bizarre. Quite à me compliquer la vie avec malloc, j'aurais plutôt sorti reinterpret_cast<> qui souligne le mieux qu'on y va comme des gros bourrins qui disent mieux savoir que le programme ce qu'ils manipulent. Aucune convertion n'est réalisée. On interprêtre autrement une donnée pointée.

    Et ... new c'est bien ! Mais il ne faut pas oublier de convertir le free.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Mais avec void*, on utilise static_cast.
    Et au mons, ça montre qu'on ne transforme pas un entier en pointeur ou un truc du genre...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. [CASTS]problème de cast de Time
    Par DeVoN dans le forum Langage
    Réponses: 7
    Dernier message: 22/02/2006, 17h24
  2. [JDBC Driver][JSTL] Problème de cast de données
    Par GyLes dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/09/2005, 10h00
  3. problème de cast!
    Par LaseLiep dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2005, 09h30
  4. Problème de cast/serialization/externalization ?
    Par Linlin dans le forum CORBA
    Réponses: 1
    Dernier message: 06/12/2004, 16h46
  5. [C#] Problème de casting de @IDENTITY
    Par bilb0t dans le forum Accès aux données
    Réponses: 7
    Dernier message: 03/09/2004, 09h42

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