[C++-sig] Calling python virtual function from C++

William Marié william.marie at gmail.com
Fri Feb 6 12:56:40 CET 2009


Thank you very much it was exatly that :)


David Abrahams a écrit :
> 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 to_python (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
>>     
>
>   



More information about the Cplusplus-sig mailing list