It seems I still have no idea what is going on, and I'm starting to become a bit desparate. I'm going to post as much as possible about the issue I'm having.
this is the smallest reproduce for the problem i'm having. typedef boost::shared_ptr<Actor> ActorPtr; class Actor { public: ActorPtr parent; std::vector<ActorPtr> children; void add(const ActorPtr &actor); void remove(const ActorPtr &actor); virtual void queue_redraw() = 0; }; class PyActor : public Actor, public wrapper<Actor> { public: virtual void queue_redraw() { get_override("queue_redraw")(); } }; BOOST_PYTHON_MODULE(nucleus) { class_<PyActor, ActorPtr, boost::noncopyable>("Actor") .def_readwrite("children", &PyActor::children) .def_readwrite("parent", &PyActor::parent) .def("add", &PyActor::add) .def("remove", &PyActor::remove) .def("queue_redraw", pure_virtual(&Actor::queue_redraw)) ; } ================ yields =================== /usr/include/boost/python/object/pointer_holder.hpp: In constructor 'boost::python::objects::pointer_holder<Pointer, Value>::pointer_holder(PyObject*) [with Pointer = boost::shared_ptr<halebopp::Actor>, Value = halebopp::Actor]': /usr/include/boost/python/object/make_holder.hpp:83: instantiated from 'static void boost::python::objects::make_holder<0>::apply<Holder, ArgList>::execute(PyObject*) [with Holder = boost::python::objects::pointer_holder<boost::shared_ptr<halebopp::Actor>, halebopp::Actor>, ArgList = boost::mpl::vector0<mpl_::na>]' /usr/include/boost/python/detail/make_keyword_range_fn.hpp:64: instantiated from 'boost::python::api::object boost::python::detail::make_keyword_range_constructor(const CallPolicies&, const boost::python::detail::keyword_range&, Holder*, ArgList*, Arity*) [with ArgList = boost::mpl::vector0<mpl_::na>, Arity = boost::mpl::size<boost::mpl::vector0<mpl_::na> >, Holder = boost::python::objects::pointer_holder<boost::shared_ptr<halebopp::Actor>, halebopp::Actor>, CallPolicies = boost::python::default_call_policies]' /usr/include/boost/python/init.hpp:330: instantiated from 'void boost::python::detail::def_init_aux(ClassT&, const Signature&, NArgs, const CallPoliciesT&, const char*, const boost::python::detail::keyword_range&) [with ClassT = boost::python::class_<halebopp::python::PyActor, boost::shared_ptr<halebopp::Actor>, boost::noncopyable_::noncopyable, boost::python::detail::not_specified>, CallPoliciesT = boost::python::default_call_policies, Signature = boost::mpl::vector0<mpl_::na>, NArgs = boost::mpl::size<boost::mpl::vector0<mpl_::na> >]' /usr/include/boost/python/init.hpp:399: instantiated from 'static void boost::python::detail::define_class_init_helper<0>::apply(ClassT&, const CallPoliciesT&, const Signature&, NArgs, const char*, const boost::python::detail::keyword_range&) [with ClassT = boost::python::class_<halebopp::python::PyActor, boost::shared_ptr<halebopp::Actor>, boost::noncopyable_::noncopyable, boost::python::detail::not_specified>, CallPoliciesT = boost::python::default_call_policies, Signature = boost::python::init_base<DerivedT>::visit(classT&) const [with classT = boost::python::class_<halebopp::python::PyActor, boost::shared_ptr<halebopp::Actor>, boost::noncopyable_::noncopyable, boost::python::detail::not_specified>, DerivedT = boost::python::init<mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>]::signature, NArgs = boost::mpl::size<boost::mpl::vector0<mpl_::na> >]' /usr/include/boost/python/init.hpp:171: instantiated from 'void boost::python::init_base<DerivedT>::visit(classT&) const [with classT = boost::python::class_<halebopp::python::PyActor, boost::shared_ptr<halebopp::Actor>, boost::noncopyable_::noncopyable, boost::python::detail::not_specified>, DerivedT = boost::python::init<mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>]' /usr/include/boost/python/def_visitor.hpp:31: instantiated from 'static void boost::python::def_visitor_access::visit(const V&, classT&) [with V = boost::python::def_visitor<boost::python::init<mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_> >, classT = boost::python::class_<halebopp::python::PyActor, boost::shared_ptr<halebopp::Actor>, boost::noncopyable_::noncopyable, boost::python::detail::not_specified>]' /usr/include/boost/python/def_visitor.hpp:67: instantiated from 'void boost::python::def_visitor<DerivedVisitor>::visit(classT&) const [with classT = boost::python::class_<halebopp::python::PyActor, boost::shared_ptr<halebopp::Actor>, boost::noncopyable_::noncopyable, boost::python::detail::not_specified>, DerivedVisitor = boost::python::init<mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>]' scons: building terminated because of errors. /usr/include/boost/python/class.hpp:225: instantiated from 'boost::python::class_<T, X1, X2, X3>& boost::python::class_<T, X1, X2, X3>::def(const boost::python::def_visitor<Derived>&) [with Derived = boost::python::init<mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>, W = halebopp::python::PyActor, X1 = boost::shared_ptr<halebopp::Actor>, X2 = boost::noncopyable_::noncopyable, X3 = boost::python::detail::not_specified]' /usr/include/boost/python/class.hpp:501: instantiated from 'void boost::python::class_<T, X1, X2, X3>::initialize(const DefVisitor&) [with DefVisitor = boost::python::init<mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>, W = halebopp::python::PyActor, X1 = boost::shared_ptr<halebopp::Actor>, X2 = boost::noncopyable_::noncopyable, X3 = boost::python::detail::not_specified]' /usr/include/boost/python/class.hpp:629: instantiated from 'boost::python::class_<T, X1, X2, X3>::class_(const char*, const char*) [with W = halebopp::python::PyActor, X1 = boost::shared_ptr<halebopp::Actor>, X2 = boost::noncopyable_::noncopyable, X3 = boost::python::detail::not_specified]' src/nucleus/export_ogl.cpp:94: instantiated from here /usr/include/boost/python/object/pointer_holder.hpp:179: error: cannot allocate an object of abstract type 'halebopp::Actor' src/nucleus/ogl.hpp:38: note: because the following virtual functions are pure within 'halebopp::Actor': src/nucleus/ogl.hpp:74: note: virtual void halebopp::Actor::queue_redraw()
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig