try use boost::noncopyable to B or implemente a copy constructor in B without call A copy contructor.
BR On Tue, Dec 2, 2008 at 11:03 AM, Mihail Konstantinov <[EMAIL PROTECTED]> wrote: >> 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 -- Renato Araujo Oliveira Filho _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig