Le code suivant ne fonctionne PAS, mais il exprime bien ce que je souhaite faire. Il y a un problème avec le conteneur struct struct, qui, je pense, DEVRAIT fonctionner car sa taille est connue pour tout argument template.Rappel en C++, membre du modèle?
class callback {
public:
// constructs a callback to a method in the context of a given object
template<class C>
callback(C& object, void (C::*method)())
: ptr.o(object), ptr.m(method) {}
// calls the method
void operator()() {
(&ptr.o ->* ptr.m)();
}
private:
// container for the pointer to method
template<class C>
struct {
C& o;
void (C::*m)();
} ptr;
};
Y at-il un moyen de faire une telle chose? Je veux dire avoir un callback de classe non-template qui encapsule un pointeur sur la méthode?
Merci les gourous C++!
Edit:
S'il vous plaît voir ceci:
Callback in C++, template member? (2)
Vous voulez utiliser 'boost :: function' ou 'boost :: signal': http://www.boost.org/doc/libs/1_39_0/doc/html/function.html. – avakar