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

  FORUM HardWare.fr
  Programmation
  C++

  passer une méthode en paramètre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passer une méthode en paramètre

n°1314643
Vel-Ryphon
Posté le 27-02-2006 à 17:58:07  profilanswer
 

salut,
 
dans la méthode de classe sur laquelle je bosse actuellement, j'ai besoin de passer en paramètre une fonction. Jusque là pas de problème. Cependant, lorsque j'appelle cette fonction, et que je lui donne en paramètre une méthode d'un objet, le compilateur n'aime pas, et me dit "cannot convert parameter x from void (float temp) to void(_cdlkekchose)(float temp). Je suppose que cela vient du fait qu'il ne s'agit pas d'une fonction normale mais d'une méthode de classe. Que dois-je rajouter dans la déclaration du paramètre, pour q'uil accèpte non seulement les fonctions basiques, mais également les méthodes de classes (et pourquoi pas de template tant qu'à faire) ?  
 
Merci


Message édité par Vel-Ryphon le 27-02-2006 à 18:25:51
mood
Publicité
Posté le 27-02-2006 à 17:58:07  profilanswer
 

n°1314646
Taz
bisounours-codeur
Posté le 27-02-2006 à 18:00:20  profilanswer
 

fait une petite recherche sur le forum

n°1314769
Vel-Ryphon
Posté le 27-02-2006 à 20:06:21  profilanswer
 

désolé je ne trouve rien qui règle mon problème. Quelqu'un peut m'aider?


Message édité par Vel-Ryphon le 27-02-2006 à 20:06:45
n°1316733
Vel-Ryphon
Posté le 02-03-2006 à 09:40:26  profilanswer
 

toujours personne ??

n°1321898
Vel-Ryphon
Posté le 09-03-2006 à 15:14:26  profilanswer
 

j'ai posé une colle ou quoi ? lol
 
bon quelques informations : je compile avec Visual C++ 6.
De plus, pour rappeler le problème, j'ai une classe A, qui a une méthode meth0 pour laquelle je définis un paramètre de type pointeur de fonction :
class A
{
...
public :
      void meth0((void*)(function_name)(float param1));
};
 
j'ai également une classe B avec une méthode classique meth1(float param1)
 
lorsque je compile :
 
A->meth0(B->meth1);
 
ça plante, Visual me sort une erreur lié à _CDECL (ça a un rapport avec l'appel de pointeur ->, mais j'm'y connais pas plus donc bon.
 
par contre si je définis une fonction quelconque dans le code principal du main, et que je la passe en paramètre, aucun souci. Ca vient vraiment du fait que le paramètre passé n'est pas une fonction normal, mais une méthode d'un pointeur de classe.
 
SVP trouvez moi une soluce !! lol

n°1322010
Taz
bisounours-codeur
Posté le 09-03-2006 à 17:02:35  profilanswer
 

non, fait une recherche et ouvre les yeux.

n°1322034
Vel-Ryphon
Posté le 09-03-2006 à 17:33:02  profilanswer
 

désolé mais je trouve pas, mais merci de m'aider, ça fleure bon la bonne ambiance forumesque ici lol

n°1322036
Vel-Ryphon
Posté le 09-03-2006 à 17:36:51  profilanswer
 

de plus, je souligne que je souhaite le code le plus souple et générique possible, donc adieu une déclaration de paramètre évoquant une classe spécifique, style :
 
void meth0(B::*function_name)(..))
 
je veux pouvoir utiliser la méthode de cette classe, en passant n'importe quel méthode de n'importe quelle classe

n°1322038
Taz
bisounours-codeur
Posté le 09-03-2006 à 17:39:02  profilanswer
 

bah tu pourrais au moins faire l'effort de regarde dans les 10 premiers topics de la cat C++, mais non,c 'est trop difficile.
 
tu veux du générique ? ben tu template. et tu functor. et tu <typename T> ... T(x) et on en parle plus.

n°1322051
Vel-Ryphon
Posté le 09-03-2006 à 17:56:43  profilanswer
 

lol si faut lire toutes les pages de tous les topics dont le nom n'exprime pas ton problème, on n'en sort plus...d'un autre côté, ptet que certains topic évoquent des technique que je ne comprends pas forcément, puisqu'on est pas tous aussi calé que Taz en C++ (functor je connais pas), m'enfin c'est pas grave...jv me démerder avec google, et tant pis pour ma gueule

mood
Publicité
Posté le 09-03-2006 à 17:56:43  profilanswer
 

n°1322066
Mackila
Posté le 09-03-2006 à 18:27:01  profilanswer
 

Utilise "delegate" comme mot clé pour ta recherche, ca marchera mieux.
 
Et ya effectivement un sujet C++ la dessus (avec des beaux liens pour encore plus d'explications) qui est passé ya pas longtemps.

n°1335944
ami6
Posté le 30-03-2006 à 23:16:51  profilanswer
 

Bonjour,
Au lieu de passer une fonction simple comme paramètre, passe une _closure : le compilateur permet alors de rentrer une méthode de la classe, et de récupérer les informations de la classe (ceci fonctionne sous C++Builder).


Message édité par ami6 le 30-03-2006 à 23:17:46
n°1335948
nargy
Posté le 30-03-2006 à 23:24:52  profilanswer
 

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

  passer une méthode en paramètre

 

Sujets relatifs
[Résolu] Problème d'héritage d'héritage + redéfinition de méthodeEst ce que l'on peut faire passer une variable avec un header ?
passer ds variable dans ds metas[Hibernate]Filtrer une requete avec une methode java
Passer des variables Javasceipt dans du phpEquivalent jad pour passer du .java au .jsp
est on obligé de passer pas un rdoConnection ?Comment fait-on pour passer en parametre une fonction à une méthode ?
passer une méthode en paramètre ?peut on passer une methode en parametre ?
Plus de sujets relatifs à : passer une méthode en paramètre


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