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

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 35
    Par défaut CALLBACKS : stocker l'adresse d'une fonction membre et l'appeler plus tard [je trouve pas - deviens dingue]
    Bonsoir à tous, ma compréhension des templates oscille entre 1% et 2% de l'affaire selon les jours :-)
    Il y a quelque chose que je cherche désespérément à réaliser, sans succès. J'ai eu beau chercher partout, je ne pige pas.

    Donc, on imagine un pseudo code comme ça :

    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
     
    class Media {
     
      enum names { velocity, volume, tagada }
     
      void setProperty(int prop_name, float value);
      void setProperty(int prop_name, int value);
      void setProperty(int prop_name, vector3 value);
      void setProperty(int prop_name, vector2 value);
      void setProperty(int prop_name, trucmuche value);
    }
     
    class Control {
      vector<Media> medias;
      void registerCallback(adresse_fonction) {
        medias.push_back(adresse_fonction);
      }
      void update() {
        // parcourir les éléments du vector medias et appeler la fonction avec un valeur arbitraire (valeur du paramètre value)
      }
    }
     
    main() {
      Control c;
      Media m;
      c.registerCallback(&Media.setProperty(Media::velocity, float));
      c.registerCallback(&Media.setProperty(Media::volume, int));
      c.update();
    }
    Je n'arrive pas à trouver une solution pour passer la fonction de Media à Control, je ne sais pas la stocker et je ne sais pas l'appeler. Très concrètement, je ne sais pas le dire en C++
    J'ai regardé <functional>, donc bind, function etc etc mais ça me dépasse

    On dit "Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours."

    Franchement, donnez moi un poisson parce que je risque de passer quelques années à essayer de comprendre comment fonctionne la cane à pêche

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    402
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 402
    Par défaut
    Les codes d'exemple de http://en.cppreference.com/w/cpp/uti...ional/function ne t'aident pas ?

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 35
    Par défaut
    Ha j'avais pas trouvé cette page... Je vais peut-être m'en sortir avec ça !

    Merci !

Discussions similaires

  1. [Free Pascal] Enregistrer une fonction callback depuis une fonction membre
    Par EpiTouille dans le forum Free Pascal
    Réponses: 3
    Dernier message: 11/03/2015, 11h11
  2. Réponses: 3
    Dernier message: 23/12/2010, 02h08
  3. Réponses: 2
    Dernier message: 13/09/2010, 10h55
  4. Réponses: 15
    Dernier message: 24/08/2010, 10h56
  5. Problème d'adresse d'une fonction membre
    Par ens-lyon dans le forum Débuter
    Réponses: 1
    Dernier message: 11/09/2009, 10h05

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