Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1082 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Pointeur de fonction membre avec heritage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pointeur de fonction membre avec heritage

n°1511780
Fa7
Posté le 07-02-2007 à 12:51:11  profilanswer
 

Bonjour !
 
Voila mon probleme:
 
J'ai une classe abstraite "Technique" qui possede un pointeur vers une fonction:

Code :
  1. class Technique {
  2. protected:
  3.   (Technique::*function)(int) _function;
  4. }


 
Et une classe fille, qui doit appeler cette fonction:

Code :
  1. class MaTechnique : public Technique {
  2. //(...)
  3. int MaTechnique::maFonction (int i)
  4. {
  5.    // des machins
  6. }
  7. int MaTechnique::setFunction () {
  8.    this->_function = maFonction (10);
  9. }


 
Le probleme a la compilation est que j'ai une incompatibilité de type à l'appel de "maFonction"...:

cannot convert from 'void (__cdecl *)(int)' to 'void (__thiscall Technique::* )(int)'


J'ai essayé avec un dynamic_cast, mais sans succes (mais ma syntaxe etait peut etre pas la bonne...)
 
Et le probleme est que je ne peux pas utiliser de fonction static, car la fonction "maFonction" doit modifier des variables membres de MaTechnique...
 
Je ne sais pas si c'est clair ...
Une idée ?

mood
Publicité
Posté le 07-02-2007 à 12:51:11  profilanswer
 

n°1511790
theshockwa​ve
I work at a firm named Koslow
Posté le 07-02-2007 à 13:26:20  profilanswer
 

c'est un pointeur sur fonction, pas un objet magique qui va enregistrer les arguments que tu veux lui passer. La STL te permet de faire des functors pour cette utilisation.

n°1511792
Fa7
Posté le 07-02-2007 à 13:31:21  profilanswer
 

theshockwave a écrit :

c'est un pointeur sur fonction, pas un objet magique qui va enregistrer les arguments que tu veux lui passer. La STL te permet de faire des functors pour cette utilisation.


 
ok, merci ! je vais voir de ce coté ...
 Je reviens si jamais je suis perdu ..

n°1511796
Joel F
Real men use unique_ptr
Posté le 07-02-2007 à 13:54:25  profilanswer
 

Loki::Function ou BOOST::function permettent de gérer ça bien mieux que la STL apr ailleurs ;)

n°1511799
theshockwa​ve
I work at a firm named Koslow
Posté le 07-02-2007 à 13:59:03  profilanswer
 

oui, d'ailleurs, j'ai indiqué la STL, mais je viens de réaliser que je ne saurais pas faire un Generator à partir d'une fonction unaire [:pingouino]
 
Edit : en fait, la doc SGI tendrait à me faire dire que ca doit être fait à la main http://www.sgi.com/tech/stl/AdaptableGenerator.html
 
dans ce cas, ma solution n'avançait pas trop le problème, mise à part d'indiquer qu'il convient d'avoir une classe qui stocke l'argument ainsi que le pointeur sur fonction pour le transmettre au moment de l'appel.


Message édité par theshockwave le 07-02-2007 à 14:01:19

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Pointeur de fonction membre avec heritage

 

Sujets relatifs
pointeur sur std::vector<T>code html dans fonction javascript
Fonction mailFonction de saisi avec un nombre de parametre variable
Fonction pour des nombres entiers aleatoires?[Résolu] GDI+ : Fonction Rectangle.Contains()
question sur la fonction fscommand('quit')Fonction avec argument facultatif
[Oracle 10.2] Erreur dans fonction stocké PL/SQLRécupérer le résultat d'une fonction javascript dans variable php
Plus de sujets relatifs à : Pointeur de fonction membre avec heritage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR