On Tuesday 08 July 2003 12:49 pm, Tore Knabe wrote: > Hi, > > I want to wrap a base class, which serves as an > interface, and inherit from this base class in C++. > The C++ class, which is not wrapped, overrides the > virtual function foo() from the base class. My > problem: when I call a factory method in Python to > create an object obj of the derived class, then > calling obj.foo() in Python executes the code from the > base class, not the derived one. Looking at the > wrapper code generated by SIP shows that foo is called > with the base class scope: BaseClass::foo(). This code > is generated by the function generateFunctionCall in > the SIP source file gencode.C. The commentary to the > function says: > > "... call the real function and not any version in the > wrapper class in case it is virtual. This will > prevent virtual loops." > > This protection against virtual loops prevents me from > using an interface class the way I planned. What would > happen if it were removed? What is an example of a > virtual loop?
class MyWidget(QWidget): def setPalette(self,p): # Do some fiddling with the palette. # Now call the base class implementation. QWidget.setPalette(self,p) Phil _______________________________________________ PyKDE mailing list [EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde