I want to register Python-callables with my VariableFloat-class (which is a subclass of a template-class Variable<double>) and call them if the variable's value changes.
For this I added an instance of class EventEmitter, which should hold references to those callbacks. So, VariableFloat delegates to EventEmitter, when it comes to deal with callbacks (reg'ing and calling). template <class TYPE> class EventEmitterSync3 { public: <snip/> void operator()() // Call the handler { if (_p_tau4eh) (*_p_tau4eh)( *this); }; void register_tau4ehS( void (*callable)( EventEmitterSync3<TYPE>& )) // Register the handler { _p_tau4eh = callable; }; <snip/> private: void (*_p_tau4eh)( EventEmitterSync3<TYPE>& ) = NULL; // The handler }; The class VariableFloat (actually its base class _Variable<TYPE>) holds a member of type EventEmitterSync<TYPE> like so: private: EventEmitterSync3<TYPE> _tau4ee_on_change; and the wrapper definitions are void (VariableFloat::*register_tau4ehS)( void (*)( EventEmitterSync3<double>& )) = &VariableFloat::register_tau4ehS; and .def( "register_tau4ehS", register_tau4ehS) Compiling yields errors coming from boost being rather cryptic to me. But the last few lines say: /media/truecrypt13/D.X/Projects/DDG/tau4/src/cpp/src/tau4misc/main.cpp:43:1: required from here /usr/include/boost/python/converter/registered.hpp:86:7: error: no matching function for call to ?register_shared_ptr1(void (*) (EventEmitterSync3<double>&))? /usr/include/boost/python/converter/registered.hpp:86:7: note: candidate is: /usr/include/boost/python/converter/registered.hpp:77:3: note: template<class T> void boost::python::converter::detail::register_shared_ptr1(const volatile T*) /usr/include/boost/python/converter/registered.hpp:77:3: note: template argument deduction/substitution failed: /usr/include/boost/python/converter/registered.hpp:86:7: note: types ?const volatile T? and ?void(EventEmitterSync3<double>&)? have incompatible cv-qualifiers Seems I have to put "const volatile" somewhere? I found some dox, which could be relevant, here: http://www.boost.org/doc/libs/1_51_0/libs/python/doc/v2/callbacks.html But I am not sure how to apply that info to my problem. I tried to change all function pointers into objects, but that didn't work. Has anyone some sample code on storing pointers to Python functions and then calling them and is willing to share it? Paul _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig