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 :

Cannot convert from 'bool' to 'bool (__cdecl *)


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut Cannot convert from 'bool' to 'bool (__cdecl *)
    Bonjour,
    J’ai créé une classe dans laquelle je mets un pointeur sur une fonction (dans le .h).
    bool (*MaFonction)(int, bool, bool *, int *);

    Quand j’associe une fonction à ce pointeur à partir d’une autre classe(objet.MaFonction=fonction(var1, var2, var4, var3);) je rencontre cette erreur :
    erreur : C2440: '=' : cannot convert from 'bool' to 'bool (__cdecl *)(int,bool,bool *,int *)'Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

    Quelqu’un a déjà rencontré ce genre d’erreur? J’ai déjà testé des solutions mais ça ne marche pas^^

    Je vous remercie d’avance !

  2. #2
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Bonjour et bienvenu.

    fonction(var1, var2, var4, var3) n'est pas de type MaFonction mais de type bool ; en revanche fonction est du type approprié .

    Plutôt que d'utiliser du gras pour tes exemples de code et d'erreur, utilise plutôt la balise code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main(void)
    {
        return 0;
    }
    ou c pour du std::cout << "code en ligne" << std::endl;.

    Cordialement,

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    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 153
    Billets dans le blog
    4
    Par défaut
    Salut,

    fonction(var1, var2, var4, var3); est un appel de fonction et pas du tout un pointeur vers une fonction.
    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.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut
    Coucou je vous remercie tous les deux pour votre réponse.
    Si j’ai bien compris il faut que je crée un deuxième pointeur vers ma fonction que j’associe à mon premier pointeur?
    Excellente journée à vous !

  5. #5
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Tu te compliques la vie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objet.MaFonction = fonction;
    Après ça, tu pourras appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const bool result = objet.MaFonction(var1, var2, var3, var4);

  6. #6
    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
    D'un autre côté, tu es en C++: À présent, pourquoi ne pas utiliser std::function<bool(int,bool,bool *,int *)> plutôt qu'un pointeur nu de fonction?
    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.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut
    Citation Envoyé par prgasp77 Voir le message
    Tu te compliques la vie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objet.MaFonction = fonction;
    Après ça, tu pourras appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const bool result = objet.MaFonction(var1, var2, var3, var4);
    Coucou merci pour vos réponses!

    Quand j'essaye avec cette méthode j'ai le même type d'erreur au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    objet.MaFonction = fonction;
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    Da'près ce que j'ai trouvé sur Internet cette façon n'est pas compatible avec un compilateur windows 2008. Reprends moi si je me trompe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     std::function<bool(int,bool,bool *,int *)>
    Merci encore une fois!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/03/2015, 10h57
  2. Réponses: 3
    Dernier message: 03/10/2012, 11h45
  3. Réponses: 20
    Dernier message: 23/01/2007, 15h34
  4. Type mismatch: cannot convert from Integer to int
    Par littleb dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 16/10/2006, 22h35

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