> Stefan Seefeld wrote: > > In this case you want to tell Python that your object is non-copyable:
I followed your suggestion and still get the same error message: boost.cpp:6: error: ‘A::A(const A&)’ is private (full bjam output is appended to this email) Could you check this modified code? boost_ext.cpp: #include <boost/python.hpp> using namespace boost::python; class A{ private: A(const A&){}; //no public copy constructor public: A(){}; }; class B: public A{ public: B(){}; }; BOOST_PYTHON_MODULE(boost_ext) { class_<A,boost::noncopyable> a("A",init<>()); class_<B, bases<A> >("B",init<>()); } Thank you Mihail Compilation output: $bjam boost_ext ...patience... ...found 1202 targets... ...updating 2 targets... gcc.compile.c++ bin/gcc-4.1.2/debug/boost.o boost.cpp: In copy constructor ‘B::B(const B&)’: boost.cpp:11: instantiated from ‘boost::python::objects::value_holder<Value>::value_holder(PyObject*, A0) [with A0 = boost::reference_wrapper<const B>, Value = B]’ /home/mihail/temporary/boost_1_37_0/boost/python/object/make_instance.hpp:68: instantiated from ‘static Holder* boost::python::objects::make_instance<T, Holder>::construct(void*, PyObject*, boost::reference_wrapper<const T>) [with T = B, Holder = boost::python::objects::value_holder<B>]’ /home/mihail/temporary/boost_1_37_0/boost/python/object/make_instance.hpp:42: instantiated from ‘static PyObject* boost::python::objects::make_instance_impl<T, Holder, Derived>::execute(Arg&) [with Arg = const boost::reference_wrapper<const B>, T = B, Holder = boost::python::objects::value_holder<B>, Derived = boost::python::objects::make_instance<B, boost::python::objects::value_holder<B> >]’ /home/mihail/temporary/boost_1_37_0/boost/python/object/class_wrapper.hpp:29: instantiated from ‘static PyObject* boost::python::objects::class_cref_wrapper<Src, MakeInstance>::convert(const Src&) [with Src = B, MakeInstance = boost::python::objects::make_instance<B, boost::python::objects::value_holder<B> >]’ /home/mihail/temporary/boost_1_37_0/boost/python/converter/as_to_python_function.hpp:27: instantiated from ‘static PyObject* boost::python::converter::as_to_python_function<T, ToPython>::convert(const void*) [with T = B, ToPython = boost::python::objects::class_cref_wrapper<B, boost::python::objects::make_instance<B, boost::python::objects::value_holder<B> > >]’ /home/mihail/temporary/boost_1_37_0/boost/python/to_python_converter.hpp:87: instantiated from ‘boost::python::to_python_converter<T, Conversion, has_get_pytype>::to_python_converter() [with T = B, Conversion = boost::python::objects::class_cref_wrapper<B, boost::python::objects::make_instance<B, boost::python::objects::value_holder<B> > >, bool has_get_pytype = true]’ /home/mihail/temporary/boost_1_37_0/boost/python/object/class_wrapper.hpp:26: instantiated from ‘static void boost::python::objects::class_metadata<T, X1, X2, X3>::maybe_register_class_to_python(T2*, mpl_::false_) [with T2 = B, T = B, X1 = boost::python::bases<A, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>, X2 = boost::python::detail::not_specified, X3 = boost::python::detail::not_specified]’ /home/mihail/temporary/boost_1_37_0/boost/python/object/class_metadata.hpp:229: instantiated from ‘static void boost::python::objects::class_metadata<T, X1, X2, X3>::register_aux2(T2*, Callback) [with T2 = B, Callback = boost::integral_constant<bool, false>, T = B, X1 = boost::python::bases<A, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>, X2 = boost::python::detail::not_specified, X3 = boost::python::detail::not_specified]’ /home/mihail/temporary/boost_1_37_0/boost/python/object/class_metadata.hpp:219: instantiated from ‘static void boost::python::objects::class_metadata<T, X1, X2, X3>::register_aux(void*) [with T = B, X1 = boost::python::bases<A, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>, X2 = boost::python::detail::not_specified, X3 = boost::python::detail::not_specified]’ /home/mihail/temporary/boost_1_37_0/boost/python/object/class_metadata.hpp:205: instantiated from ‘static void boost::python::objects::class_metadata<T, X1, X2, X3>::register_() [with T = B, X1 = boost::python::bases<A, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>, X2 = boost::python::detail::not_specified, X3 = boost::python::detail::not_specified]’ /home/mihail/temporary/boost_1_37_0/boost/python/class.hpp:496: instantiated from ‘void boost::python::class_<T, X1, X2, X3>::initialize(const DefVisitor&) [with DefVisitor = boost::python::init_base<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 = B, X1 = boost::python::bases<A, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>, X2 = boost::python::detail::not_specified, X3 = boost::python::detail::not_specified]’ /home/mihail/temporary/boost_1_37_0/boost/python/class.hpp:208: instantiated from ‘boost::python::class_<T, X1, X2, X3>::class_(const char*, const boost::python::init_base<DerivedT>&) [with 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_>, W = B, X1 = boost::python::bases<A, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_>, X2 = boost::python::detail::not_specified, X3 = boost::python::detail::not_specified]’ boost.cpp:19: instantiated from here boost.cpp:6: error: ‘A::A(const A&)’ is private boost.cpp:11: error: within this context /home/mihail/temporary/boost_1_37_0/boost/python/object/value_holder.hpp: In constructor ‘boost::python::objects::value_holder<Value>::value_holder(PyObject*, A0) [with A0 = boost::reference_wrapper<const B>, Value = B]’: /home/mihail/temporary/boost_1_37_0/boost/python/object/value_holder.hpp:134: note: synthesized method ‘B::B(const B&)’ first required here "g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -fPIC -I"/home/mihail/temporary/boost_1_37_0" -I"/usr/include/python2.5" -c -o "bin/gcc-4.1.2/debug/boost.o" "boost.cpp" ...failed gcc.compile.c++ bin/gcc-4.1.2/debug/boost.o.... ...skipped <pbin/gcc-4.1.2/debug>boost_ext.so for lack of <pbin/gcc-4.1..2/debug>boost.o... ...failed updating 1 target... ...skipped 1 target.... _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig