[PyQt] sip: wrong class virtual function being called
Jeremy Sanders
jeremy at jeremysanders.net
Fri Jun 5 18:34:46 BST 2015
Hi -
I'm having a problem with sip where the wrong version of a virtual
function is being called. I'm overriding a virtual function in a python
subclass of a C++ class. This function is being called by a C++
container, which owns the class instance. If I keep a Python reference
to the instance, then everything works.
Please see the attached code. test.py calls the C++ code. Normally the
code prints
Object::func()
42
If del in test.py is uncommented, then it prints
Object::func()
Object::func()
Therefore the inherited virtual function is being called, not the
overriding function.
Is this a problem with my code, or a SIP bug? I'm using SIP 4.16.3 (on
Ubuntu x86-64). Is there a workaround? I can change the C++ code.
Thanks
Jeremy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.py
Type: text/x-python
Size: 278 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20150605/1792d355/attachment.py>
-------------- next part --------------
%Module(name=mytest, version=0)
class Object
{
%TypeHeaderCode
#include <mytest.h>
%End
public:
virtual ~Object();
virtual void func();
};
class ObjectContainer : public Object
{
%TypeHeaderCode
#include <mytest.h>
%End
public:
~ObjectContainer();
void addObject(Object* obj /Transfer/);
void callFuncs();
};
class Scene
{
%TypeHeaderCode
#include <mytest.h>
%End
public:
Scene();
ObjectContainer root;
};
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mytest.cpp
Type: text/x-c++src
Size: 433 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20150605/1792d355/attachment.cpp>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mytest.h
Type: text/x-chdr
Size: 367 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20150605/1792d355/attachment.h>
More information about the PyQt
mailing list