[C++-sig] pyste and virtual classes.
giulio.eulisse at cern.ch
Tue Apr 1 10:12:43 CEST 2003
> > Another possible solution would be get rid of the whole boost/QT idea,
> > and make PyQT and boost play nicely together
> It's not clear that PyQT (SIP) will automatically generate empty
> virtual functions for you either.
The problem is not the virtual function per se. It's the virtual
function requiring QPopupMenu or so: I don't have time, right now, to
implement every single class in QT but I have to if these classes are in
a pure virtual function. PyQT just is much more advanced as for the
number of classes implemented.
> You must mean an abstract class. There's no such thing as a virtual
> > which derives from a QT one, this class gets derived into "Derived"
> > and extended in python. An instance of the class "Derived" is
> > created in an embedded python environment and is passed to C++ using
> > something like extract<Base&>.
> It's not clear what you mean by "passed to C++ using
> extract<Base&>". You can only write extract<Base&> in C++, so the
> object must already be available in C++ code somehow.
I get the "object" from the embedded python environment.
> > The virtual method MyBase.method() is then called in C++ and its
> > python implementation in Derived gets called.
> **OK so far; I don't see any need to provide a C++ implementation of
> the virtual member function other than the one provided automatically
> by pyste's generated wrapper class. That alone should be enough to
> ensure that there is no problem with instantiating an abstract base
The problem is that if you exclude a pure virtual function(because you
don't want to implement the whole QT), the code generated by pyste does
not compile because the wrapping for that function is not generated.
> I don't know the first thing about PyQt, but the real issue is that I
> can't understand the problem you're having.
I want to have a stripped down QT module and since QStyle has a pure
virtual method which requires QPopupMenu, I want to exclude() it.
More information about the Cplusplus-sig