On Donnerstag, 20. Juni 2013 14:09:05 CEST, Jan Kundrát wrote:

sort-of-kinda-solves this via qobject_cast, but that's a band aid. The lesson I've learned is to never use an inlined virtual destructor.

I do not recall myself suggesting such ;-)

You can omit the empty virtual destructor (when inheriting from a class with 
virtual destructor) - but not inline it (and pointed out it's not inlined in 
the Qt plugin example either)

Also see:
http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++

The advise (end of do's and don'ts) is *clearly* to
...
* add non-inline virtual destructor even if the body is empty.

You should have a virtual destructor because changing virtuality is not 
possible and a virtual destructor is always a good idea.
It should be not inlined, because tl;dr - inlining in any ABI stability 
concerned header is a can of worms (resolution problems aside: you're basically 
not getting rid of it ever again)

Cheers,
Thomas

Reply via email to