1
Je veux créer un objet fonctionnel qui pourrait être appelé plus tard (callback) construire à partir de un objet et une fonction membre de cet objet.créer un objet fonctionnel avec la méthode et l'objet
class A
{
public:
void AnyMethod() { cout << "Hello" << endl; }
};
int main()
{
A a;
function<???>f1(&A::AnyFunc, &a); // ?????
...
f1();
}
Je suis un peu confus, car la création d'un fil est très simple:
thread t1 (&A::AnyFunc, &a);
...
t1.join();
Il est simple si je l'utilise avec une fonction lamba, mais cela est une surcharge de bits que je veux éviter.
function<void(void)> f2([&a](){ a.AnyFunc(); }); // works fine
Peut-être qu'il existe un meilleur moyen d'obtenir un objet appelable?
L'utilisation d'un lambda ne devrait pas ajouter de surcharge. En fait, l'objet std :: function ajoute probablement plus de préfixes que d'utiliser un lambda typé automatiquement. – bames53
En effet - les lambdas sont beaucoup plus légers que 'bind', et' function <> 'aura plus de poids que l'un ou l'autre. – ildjarn