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

  FORUM HardWare.fr
  Programmation
  C++

  Problème avec for_each

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec for_each

n°589629
haazheel
Posté le 12-12-2003 à 21:32:06  profilanswer
 

Salut à tous,
 
alors voici mon problème:
 
Admettons la classe suivante:
 
class A
{
std::vector<Possession> v_poss;
 
void foo();
void toto(const Possessions & possession);
};
 
Je voudrais faire ça:
 
void A::foo()
{
for_each(v_poss.begin(),v_poss.end(),toto);
 
}
 
Mais ça ne fonctionne pas... J'ai vu qu'il existait la fonction  
std::mem_fun, mais apparemment elle permet d'appeller une fonction membre  
de Possession dans mon cas...
 
Comment je peux faire ça?
 
Merci d'avance!!

mood
Publicité
Posté le 12-12-2003 à 21:32:06  profilanswer
 

n°589753
Joel F
Real men use unique_ptr
Posté le 13-12-2003 à 00:09:58  profilanswer
 

Soit tu passe tot en methode de classe, soit tu utilise mem_fun :
 
for_each(v.begin(),v.end(),mem_fun(A::toto)); si je ne m'abuse.

n°589761
Taz
bisounours-codeur
Posté le 13-12-2003 à 00:20:19  profilanswer
 

non, ça va pas marcher là. précices ce que tu veux faire là.

n°589767
Taz
bisounours-codeur
Posté le 13-12-2003 à 00:30:59  profilanswer
 

bah t'as eu des réponses sur fclc++ et même une démo de boost.

n°589778
haazheel
Posté le 13-12-2003 à 00:44:26  profilanswer
 

Yep, merci de vos réponses quand même... ;)
 
Pour ceux que ça pourrait intéresser:
 

Code :
  1. for_each(v_poss.begin(),v_poss.end(),boost::bind(&A::toto, this, _1));


 
Je n'ai pas cherché, mais à quoi sert le _1 en troisième argument de boost::bind()?


Message édité par haazheel le 13-12-2003 à 00:46:14
n°589784
Taz
bisounours-codeur
Posté le 13-12-2003 à 00:47:29  profilanswer
 

y a bien d'autres méthodes tout en restant dans std
 
quitte à passer en boost, j'aurais fait
 

Code :
  1. #include <boost/functional.hpp>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <string>
  5. struct Greeter
  6. {
  7.   Greeter(const std::string &n)
  8.     : name(n)
  9.   {}
  10.   void hello(const std::string &s) const
  11.   {
  12.     std::cout << this->name << " dit bonjour à " << s << '\n';
  13.   }
  14.   const std::string name;
  15. };
  16. int main()
  17. {
  18.  
  19.   const std::string tab[] = {"Porcinet", "Bouriquet", "Tigrou"};
  20.   Greeter g("Taz" );
  21.   std::for_each(tab, tab + sizeof tab / sizeof *tab, boost::bind1st(boost::mem_fun_ref(&Greeter::hello), g));
  22. }

n°589785
Taz
bisounours-codeur
Posté le 13-12-2003 à 00:49:13  profilanswer
 

(ici on utilise le bind1st de boost, car le std::bind1st est limité et n'a pas de version correcte pout des fonctor const, STL à des limitations de ce côté dans sa version actuelle, boost/functional.hpp propose le complément, même sémantique, ceci sera phagocyté dans std bientôt)

n°589791
haazheel
Posté le 13-12-2003 à 00:54:35  profilanswer
 

Je sens que je vais me faire taper sur les doigts, mais j'ai pas mon bouquin à proximité:
 
c'est quoi exactement un fonctor?

n°589792
Taz
bisounours-codeur
Posté le 13-12-2003 à 00:55:46  profilanswer
 

objet fonction

n°589795
haazheel
Posté le 13-12-2003 à 01:03:37  profilanswer
 

Ah ok, je me souviens avoir lu ça...
 
Il faudra que j'y rejette un oeil...


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

  Problème avec for_each

 

Sujets relatifs
probleme sql avec insert intoSHELL/TCSH : Probleme sur un script automatique
exif_imagetype probleme[C] Probleme exec dans un fork :D
problème avec les la transformation de lien en BBCode[PHP] Probleme avec DOMXML
Probleme avec JavaProbleme d'heritage et de surcharge en C#
fonction mail, base de données, variable, petit problème!Problème de compréhension d' une requête SQL
Plus de sujets relatifs à : Problème avec for_each


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