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

  FORUM HardWare.fr
  Programmation
  C++

  mem_fun / _ref

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mem_fun / _ref

n°1897276
Glock 17Pr​o
Posté le 20-06-2009 à 18:53:50  profilanswer
 

Code :
  1. struct A
  2. {
  3. void f(char c ){cout << c;}
  4. };
  5.  
  6. int  main()
  7. {
  8. string s="island";
  9. for_each( s.begin() , s.end() , std::mem_fun(& A::f ) );
  10. system("pause" );
  11. }
 

Où est le soucy ?


Message édité par Glock 17Pro le 20-06-2009 à 19:14:20
mood
Publicité
Posté le 20-06-2009 à 18:53:50  profilanswer
 

n°1897277
Glock 17Pr​o
Posté le 20-06-2009 à 19:44:13  profilanswer
 

ce forum est mort le samedi soir, arrêter de sortir un peu!


Message édité par Glock 17Pro le 20-06-2009 à 19:44:37
n°1897284
Joel F
Real men use unique_ptr
Posté le 20-06-2009 à 20:37:43  profilanswer
 

et boost::bind ca serait quand meme mieux hein :E

n°1897286
Un Program​meur
Posté le 20-06-2009 à 20:40:19  profilanswer
 

De quel A faudrait il appeler le membre A::f()?


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1897287
Joel F
Real men use unique_ptr
Posté le 20-06-2009 à 20:42:24  profilanswer
 

oui en plus :/
j'ai besoin de sommeil [:prozac]

n°1897358
Glock 17Pr​o
Posté le 21-06-2009 à 12:27:45  profilanswer
 

Un Programmeur a écrit :

De quel A faudrait il appeler le membre A::f()?


Code :
  1. A h;
  2. for_each( s.begin() , s.end() , std::mem_fun (& h.f )  );


 
un truc comme ça ??

n°1897411
Un Program​meur
Posté le 21-06-2009 à 19:24:50  profilanswer
 

Si je comprends bien ce que tu veux, la SL ne fournit pas (encore, ce sera en C++0X) ce qu'il faut, il te faut soit utiliser tr1 ou boost ou te faire une classe qui a ce qu'il faut (c'est pas très compliqué, mais ça sert pas à grand chose non plus de réinventer la roue).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1897412
Glock 17Pr​o
Posté le 21-06-2009 à 19:42:07  profilanswer
 

ok je pensais que je pouvais adapter une fonction membre pour pouvoir l'utiliser dans les algorithmes de la SL , rien en standard qui prend en charge ça donc


Message édité par Glock 17Pro le 21-06-2009 à 19:49:47
n°1897423
Un Program​meur
Posté le 21-06-2009 à 21:00:46  profilanswer
 

Si tu peux faire des choses.  En fait, en combinant avec bind1st, tu peux même faire ce que je crois que tu veux:
 

Code :
  1. for_each(s.begin(), s.end(),std::bind1st(std::mem_fun_ref(&A::f), h));


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1897430
Glock 17Pr​o
Posté le 21-06-2009 à 21:26:13  profilanswer
 

error C2664: 'void std::mem_fun1_ref_t<_Result,_Ty,_Arg>::operator ()(_Ty &,_Arg) const' : impossible de convertir le paramètre 1 de 'const A' en 'A &'

 

je ne vois pas trop comment résoudre le pbm du const


Message édité par Glock 17Pro le 21-06-2009 à 21:46:47
mood
Publicité
Posté le 21-06-2009 à 21:26:13  profilanswer
 

n°1897486
Un Program​meur
Posté le 22-06-2009 à 08:06:07  profilanswer
 

A::f doit être une fonction const puisque les deux arguments des binary_function sont passés par référence constante.  Autre chose qui pourrait te surprendre, bind1st copie ses arguments.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1897589
Glock 17Pr​o
Posté le 22-06-2009 à 11:17:04  profilanswer
 

Un Programmeur a écrit :

A::f doit être une fonction const puisque les deux arguments des binary_function sont passés par référence constante.  Autre chose qui pourrait te surprendre, bind1st copie ses arguments.


super ça marche bien, et si f avait deux arguments, on peut s'en sortir aussi? il faut combiner deux bind?

n°1897629
Un Program​meur
Posté le 22-06-2009 à 12:13:26  profilanswer
 

Ça fait partie des choses pas encore possible.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1897635
Joel F
Real men use unique_ptr
Posté le 22-06-2009 à 12:22:22  profilanswer
 

boost::function le supporte par contre de mémoire

n°1897637
Un Program​meur
Posté le 22-06-2009 à 12:28:23  profilanswer
 

De même que TR1 (et il y a moyen d'avoir des arguments non const si ma mémoire est fidèle).


---------------
The truth is rarely pure and never simple (Oscar Wilde)

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

  mem_fun / _ref

 

Sujets relatifs
Plus de sujets relatifs à : mem_fun / _ref


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