I tried adding: implicitly_convertible<DocumentWrap,Document>(); implicitly_convertible<Document,DocumentWrap>();
but it doesn't appear to change anything. I would apreciate any idea on thes regard. Thanks again! On Thu, Jun 25, 2009 at 3:31 AM, Nicolas Lara<nicolasl...@gmail.com> wrote: > Hello, > > I'm having trouble trying to override a method on a class exposed to > Python. I cannot modify the original class, so I need to wrap it to > change the behaviour of some methods to be Python compatible. The > classes look like the following: > > struct DocumentWrap : Document, wrapper<Document> > { > DocumentWrap() : Document(){ }; > DocumentWrap(const Document&) { }; > wstring toString() > { > wstring w(_T("test")); > return w; > } > int test(){ > return 1; > } > }; > > class_<Hits>("Hits", init<int>()) > .def("doc", &Hits::doc, return_internal_reference<>()); > class_<DocumentWrap>("Document") > .def("toString", &DocumentWrap::toString) > .def("test", &DocumentWrap::test) > ; > > Hits::doc returns a Document. If I do: > >>>> d = Document() >>>> d.test() > 1 >>>> d.toString() > "test" > > I get the right answer. However, If I obtain the class through Hits I > get a reference to a c++ object of type Document (not DocumentWrap) so > trying to execute the methods yield: > > Traceback (most recent call last): > File "t.py", line 10, in <module> > d.test() > Boost.Python.ArgumentError: Python argument types in > Document.test(Document) > did not match C++ signature: > test(DocumentWrap {lvalue}) > > Traceback (most recent call last): > File "t.py", line 10, in <module> > d.toString() > Boost.Python.ArgumentError: Python argument types in > Document.toString(Document) > did not match C++ signature: > toString(DocumentWrap {lvalue}) > > Is there any way to get python to understand the internal reference to > Document can be treated as a DocumentWrap? > > Thanks in advance! > > Best Regards, > > -- > Nicolas Lara > Linux user #380134 > http://nicolas-lara.blogspot.com/ > Public key id: 0x152e7713 at http://subkeys.pgp.net/ > -- Nicolas Lara Linux user #380134 http://nicolas-lara.blogspot.com/ Public key id: 0x152e7713 at http://subkeys.pgp.net/ _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig