Bonjour à tous, je voudrais appeler une fonction membre (qui attend une référence) pour chaque objet de (disons) un vecteur membre de la même classe, comme le code suivant montre:Appeler une fonction membre avec des données membres en utilisant for_each
#include <functional>
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
struct Stuff {
double x;
};
class Test {
public:
void f1(Stuff & thing);
void f2(void);
vector<Stuff> things;
};
void Test::f1(Stuff & thing) {
; // do nothing
}
void Test::f2(void) {
for_each(things.begin(), things.end(), f1);
}
int main(void)
{
return 0;
}
Ce code me donne une erreur du compilateur lié à type de fonction non résolue surcharge. J'ai essayé aussi avec bind, mais il semble que les références requises dans f1 sont un problème. Je sais qu'il me manque quelque chose d'important ici, alors j'en profite pour résoudre mon problème et apprendre. Pour le moment, je ne peux pas installer boost, mais je voudrais savoir si boost est utile pour résoudre ce problème. Merci d'avance.
Merci. Très clair. – iluvatar
Je voulais juste ajouter que vous pouvez aussi utiliser 'std :: bind' (qui est identique à Boost.Bind) de C++ 11:' std :: for_each (things.begin(), things.end(), std: : bind (& Test :: f1, this, std :: placeholders :: _ 1)); ' – congusbongus