[C++-sig] Calling python virtual function from C++ (original) (raw)
David Abrahams dave at boostpro.com
Thu Jan 29 16:38:32 CET 2009
- Previous message: [C++-sig] Calling python virtual function from C++
- Next message: [C++-sig] virtual functions and bind size reduction
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
on Thu Jan 29 2009, William Marié <william.marie-AT-gmail.com> wrote:
Hi David,
Here is the reproducible test ( just change the boost.strap and the python paths in the jamroot ) !! Thanks for your time
void testVirtualPure( BaseCmp* pBaseCmp )
{
this->get_override("testVirtualPure")( ptr( pBaseCmp ) );
} // ^^^^ ^
Creating Python objects that reference C++ objects by pointer is dangerous; if you really want to do that, wrap the C++ pointer in ptr(...). Otherwise Boost.Python will try to copy it. You declared BaseCmp to be noncopyable, so no converter was registered that would copy a BaseCmp object into a new Python object.
David Abrahams a écrit :
on Wed Jan 28 2009, William Marié <william.marie-AT-gmail.com> wrote:
I need to call my testVirtualPure function from C++ side : BaseCmp* bc = BaseCmp(); Base* b = Base(); b->testVirtualPure( bc ); But this causes an error : TypeError: No topython (by-value) converter found for C++ type: class BaseCmp The above doesn't compile, so you can't possibly be getting that TypeError from it. Please post the exact complete, reproducible example that causes youi problems, after reducing it to a minimal test case. Thanks,
Cplusplus-sig mailing list Cplusplus-sig at python.org http://mail.python.org/mailman/listinfo/cplusplus-sig
-- Dave Abrahams BoostPro Computing http://www.boostpro.com
- Previous message: [C++-sig] Calling python virtual function from C++
- Next message: [C++-sig] virtual functions and bind size reduction
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]