Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Appel d'une fonction membre dans un for_each

1 réponse
Avatar
Michael
Bonjour à tous,

encore une question sur la STL.

Soient les classes suivantes:

class toto
{
public:
toto();
void une_fonction(int i);
}

class foo
{
public:
toto * t1;

foo();
}

std::vector<foo *> liste;

Je voudrais appeller toto::une_fonction() pour chaque élément de la liste.
Pour le moment je fais comme ceci:

for(std::vector<foo *>::const_iterator ite = liste.begin(); ite !=
liste.end(); ++ite)
(*ite)->t1->une_fonction(i);


J'ai vu que je pouvais faire quelque chose du style:

std::for_each(liste.begin(),liste.end(),std::bind2nd(std::mem_fun
(&toto::une_fonction),i));


Seulement ici je dois appeller t1->une_fonction(i);

Est-ce que la seule manière de faire consiste à ajouter une fonction
"tampon" identique dans foo?

class foo
{
public:
toto * t1;

foo();

void une_fonction(int i) { t1->une_fonction(i); }
}

et donc:

std::for_each(liste.begin(),liste.end(),std::bind2nd(std::mem_fun
(&foo::une_fonction),i));

Merci d'avance!

1 réponse

Avatar
Fabien LE LEZ
On 14 Jan 2005 11:49:48 GMT, Michael
:

Est-ce que la seule manière de faire consiste à ajouter une fonction
"tampon" identique dans foo?


C'est en tout cas le plus conseillé.

D'autant qu'une variable membre publique (ici, t1), c'est pas
forcément génial...

--
;-)