[PyQt] wrapped C/C++ object of type has been deleted - yet it hasn't!
Kyle Altendorf
sda at fstab.net
Tue Jul 25 13:19:51 BST 2017
Sorry for the repeat Nyall, I missed the list on my first reply.
On 2017-07-25 03:04, Nyall Dawson wrote:
> class MyClass
> {
>
> public:
>
> MyClass() {}
>
> MyClass *create() const
> {
> MyClass * newInstance = createInstance();
> // do some common stuff to newInstance here
> return newInstance;
> }
>
> protected:
>
> virtual MyClass *createInstance() const = 0;
>
> };
Disclaimer: I don't know SIP but this looks a bit weird by my
recollection of C++ and current Python knowledge.
Is create() supposed to be static? Or do you call it on an existing
instance of MyClass and it uses aspects of the existing class for the
'stuff' portion?
> class x(MyClass):
>
> def __init__(self):
> MyClass.__init__(self)
>
> def createInstance(self):
> new = x()
> return new
Depending on the answer above I might expect createInstance() to be an
@classmethod. Also, what about the common stuff done in MyClass that's
getting skipped? Maybe super().createInstance() and then tweak the
object and return it.
Alternatively, just make it a regular function (not a method) in both
cases if it's not actually doing anything with an existing instance of
MyClass/x (but still call the 'parent' function I would think).
Perhaps these would all be non-questions in the real code but the given
example looks a bit off to me. Best of luck resolving the issue.
Cheers,
-kyle
More information about the PyQt
mailing list