OVH Cloud OVH Cloud

Problème avec for_each

4 réponses
Avatar
Michaël Delva
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?

4 réponses

Avatar
Loïc Joly
Michaël Delva wrote:

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);

}
[...]

Comment je peux faire ça?


Regarde le thread juste au dessus du tien et nommé Conteneur et
Iteration. Il est sur le même sujet.

--
Loïc

Avatar
Michaël Delva
Merci, mais je crois que mon problème est différent...

Le problème est que je ne veux pas appeller une fonction qui est membre de
l'iterateur, mais une fonction membre de la classe où se trouve le
conteneur...

Je ne sais pas si c'est très clair...

Avec l'exemple que j'ai donné, je ne veux pas appeller une fonction membre
de Possession, mais une fonction membre de A, où est définie la fonction
toto(...)
Avatar
Loïc Joly
Michaël Delva wrote:

Merci, mais je crois que mon problème est différent...

Le problème est que je ne veux pas appeller une fonction qui est membre de
l'iterateur, mais une fonction membre de la classe où se trouve le
conteneur...

Je ne sais pas si c'est très clair...

Avec l'exemple que j'ai donné, je ne veux pas appeller une fonction membre
de Possession, mais une fonction membre de A, où est définie la fonction
toto(...)


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

--
Loïc

Avatar
Michaël Delva
Loïc Joly wrote in
news:brdc9k$c23$:

Michaël Delva wrote:

Merci, mais je crois que mon problème est différent...

Le problème est que je ne veux pas appeller une fonction qui est
membre de l'iterateur, mais une fonction membre de la classe où se
trouve le conteneur...

Je ne sais pas si c'est très clair...

Avec l'exemple que j'ai donné, je ne veux pas appeller une fonction
membre de Possession, mais une fonction membre de A, où est définie
la fonction toto(...)


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



Ah ok, j'avais pas compris...

Quoi qu'il en soit, c'est encore un peu trop compliqué pour moi pour le
moment...

Je vais rester avec ma bonne vieille boucle for() ;-)

Merci quand même!!