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 :

void (timer::)()' does not match `void (*) ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 48
    Par défaut void (timer::)()' does not match `void (*) ?
    Bonjour,

    en francais courant, ca veut dire quoi ça?

    error: argument of type `void (timer:: )()' does not match `void (*)()'
    ||=== Build finished
    je comprend que je dois envoyer qq chose du genre void(*) mais comment je fait cela?

    merci d'avance

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Ça veut dire qu'il faut que ta fonction callback soit statique.
    Au passage, la fonction qui te demande un tel callback est mal faite, car elle n'accepte pas de paramètre utilisateur, rendant ainsi nécessaire l'emploi de variables globales, déguisées ou non.
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 48
    Par défaut dans l'idée, je comprend mais ...
    pas bien clair tout cela
    je développe un chouia :

    j'ai le code suivant :
    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
     
    class timer{
    #include <allegro.h>
    #include <time.h>
      // Member Variables
        private:
     
        protected:
            static timer* m_ptimer;
            int m_iTarget_Cycle;
            int m_iLast_fps;
            int m_iFrame_Counter;
            int m_iActual_Cycle;
            void m_vtarget_incrementor();
            void m_vCount_Frames();
        public:
            timer();
            virtual ~timer();
    }
    et :

    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
    #include "timer.h"
     
     
    timer *timer::m_ptimer = NULL;
    timer::timer(){
        install_timer();
        LOCK_VARIABLE(m_iTarget_Cycle);
        LOCK_VARIABLE(m_iLast_fps);
        LOCK_VARIABLE(m_iFrame_Counter);
        LOCK_FUNCTION(m_vtarget_incrementor);
        LOCK_FUNCTION(m_vCount_Frames);
        install_int_ex(m_vtarget_incrementor, BPS_TO_TIMER(60));
        install_int_ex(m_vCount_Frames, BPS_TO_TIMER(1));
        m_iActual_Cycle = 0;
        m_iTarget_Cycle = 0;
    }
     
    timer::~timer(){
    }
     
    void timer::m_vtarget_incrementor()
    {
        m_iTarget_Cycle++;
    };
     
    void timer::m_vCount_Frames()
    {
        m_iLast_fps = m_iFrame_Counter;
        m_iFrame_Counter = 0;
    };
    a la compile, le pb est le suivant :

    timer.cpp||In constructor `timer::timer()' :
    \timer.cpp|25|error: argument of type `void (timer:: )()' does not match `void (*)()'|
    timer.cpp|26|error: argument of type `void (timer:: )()' does not match `void (*)()'|
    donc, erreur sur install_int_ex().
    si je rend mes fonctions void m_vtarget_incrementor(); et void m_vCount_Frames();static, je doit aussi mettre les différents membres utilisés en static, et ca, je veux pas ......


  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Tu sais, d'habitude, on ne met un préfixe "m_" que pour les variables membres, pas les fonctions membres.
    Et comme je l'ai dit, tu ne peux mettre que des fonctions statiques, sans aucun paramètre, à ta fonction install_int_ex. Pas d'bol, hein ?

    PS: Pourquoi inclues-tu ces deux headers dans la classe?!
    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.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 48
    Par défaut peut etre est ce la bonne question
    je sais pas en fait,
    je vais voir si je peut pas les ressortir



    à suivre

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 48
    Par défaut ca marche sans classe timer
    bon, fait le timer sans classe et ça marche.
    j'aurais préféré avoir une jolie classe timer mais je vais pas faire le difficile.

    merci pour la bonne question

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

Discussions similaires

  1. signer information does not match signer information?
    Par petozak dans le forum Langage
    Réponses: 19
    Dernier message: 09/11/2010, 21h54
  2. Réponses: 7
    Dernier message: 07/07/2006, 11h17
  3. Réponses: 1
    Dernier message: 10/05/2006, 12h11
  4. Réponses: 11
    Dernier message: 08/10/2004, 15h12
  5. [Plugin]package does not match the expected package src
    Par Fladnag dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 10/03/2004, 20h17

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