Je dois appeler une méthode qui attend un pointeur de fonction, mais ce que je veux vraiment lui transmettre est un foncteur. Voici un exemple de ce que je suis en train de faire:Fonction de pointeurs vers les fonctions membres en C++
#include <iostream>
#include "boost/function.hpp"
typedef int (*myAdder)(int);
int adderFunction(int y) { return(2 + y); }
class adderClass {
public:
adderClass(int x) : _x(x) {}
int operator() (int y) { return(_x + y); }
private:
int _x;
};
void printer(myAdder h, int y) {
std::cout << h(y) << std::endl;
}
int main() {
myAdder f = adderFunction;
adderClass *ac = new adderClass(2);
boost::function1<int, int> g =
std::bind1st(std::mem_fun(&adderClass::operator()), ac);
std::cout << f(1) << std::endl;
std::cout << g(2) << std::endl;
printer(f, 3);
printer(g, 4); // Is there a way to get this to work?
}
Je n'ai pas été en mesure de trouver un moyen d'obtenir la dernière ligne, imprimante (g, 4), de compiler. Y a-t-il un moyen de faire en sorte que cela fonctionne? Les seules choses dans mon contrôle sont la méthode "main" et la classe "adderClass".
Cela fonctionnerait, mais (j'ai oublié de mentionner), la méthode "imprimante" est dans le code que je ne peux pas changer. – JamieC
Tout ce qui est sous mon contrôle est la méthode "main" et la classe "adderClass". – JamieC