Disons que j'ai une classe avec trois fonctions membres, comme suit:Passe Membre Fonction en tant que paramètre à d'autres fonctions membres (C++ 11 <function>)
#include <iostream>
#include <functional>
class ClassName
{
public:
double add(double a, double b);
double intermediate(double a, double b, std::function<double (double,double)> func);
double combiner(double a, double b);
};
double ClassName::add(double a, double b)
{
return a+b;
}
double ClassName::intermediate(double a, double b, std::function<double (double,double)> func)
{
return func(a, b);
}
double ClassName::combiner(double a, double b)
{
return intermediate(a, b, add);
}
int main()
{
ClassName OBJ;
std::cout << OBJ.combiner(12, 10);
}
Ce que je suis désireux de faire est de passer le membre fonction "ajouter" à la fonction membre "intermédiaire" qui est alors appelée par "combineur". Cependant, je ne pense pas que j'utilise la bonne syntaxe, parce que quand j'essaie de compiler ceci, j'obtiens une erreur disant "syntaxe non-standard, utilisez '&' pour créer un pointeur vers un membre." Je ne suis pas très sûr de ce qui ne va pas, parce que cette méthode fonctionne parfaitement si ces fonctions ne sont pas des fonctions membres dans une classe (juste des fonctions régulières définies dans l'espace de noms). Alors est-il possible de passer une fonction membre à une autre fonction membre?
'retour intermédiaire (un , b, [ceci] (double x, double y) {return add (x, y);}); ' –