Humm
std::for_each(this->unVecteur.begin(),this->unVecteur.end(),*this);
1 - Ca compile pas de problème, par contre ça boucle pour une raison qui méchappe :s Si j'ai 2 éléments dans le vecteur, je vois passer dans l'operateur()
elem0 elem1 elem0 elem1 elem0 elem1 elem0 elem1 ....
Est-ce bien normal ? Je suppose que oui, mais je ne vois pas pourquoi sa boucle comme cela...
2 - J'ai aussi regarder du coté de mem_fun en ajoutant une fonction membre à ma classe.
std::for_each(this->unVecteur.begin(),this->unVecteur.end(), std::mem_fun(&MaClasse::MaFonction));
(mon vecteur contien des pointeurs vers des objets, d'ou le mem_fun)
Avec cela je retombe sur le problème suivant :
error C2064: le terme ne correspond pas à une fonction qui prend 1 arguments
Il faudrait donc que j'utilise un bind1st ou bind2nd mais je ne comprends pas :
- - Ou sont mes deux paralmètres (je n'en vois toujours q'un :s)
- Quel binding utiliser :s
Lors de l'instanciation du template je me retrouve avec cette erreur :
1 2 3 4 5 6 7 8 9
| with
1> [
1> _Fn1=std::mem_fun1_t<void,CMaclass,int *>,
1> _Ty=int *,
1> _Alloc=std::allocator<int *>,
1> _Result=void,
1> _Arg=int *,
1> _InIt=std::_Vector_iterator<int *,std::allocator<int *>>
1> ] |
Ce que j'en comprends c'est que le foncteur à une signature à 3 paramètres
_Fn1=std::mem_fun1_t<void,CMaclass,int *>
Et la je dois avouer que je sèche complètement...
Partager