c++ - Is it safe to use *virtual* multiple inheritance if QObject is being derived from DIRECTLY? -
i understand in general, multiple inheritance qobject
-derived classes (even virtual multiple inheritance) not supported in qt.
i understand reason (i think) in virtual inheritance case, qt classes not themselves virtually inherit qobject
. example, if attempt derive class virtually both qwidget
, qthread
, placing virtual inheritance in irrelevant place in inheritance chain , still wind 2 qobject
instances.
i therefore think safe, , supported in qt, use virtual inheritance qt class being derived qobject
itself.
i have:
class top : public qobject {}; class left : public virtual top {}; class right : public virtual top {}; class bottom : public left, public right {}; // safe, , supported qt?
note instances of bottom
have 1 instance of top
(and hence 1 instance of qobject
), seems rationale avoiding multiple inheritance in qt (even virtual multiple inheritance) not apply here.
the above construct nonetheless results in qt compiler warning class bottom inherits 2 qobject subclasses left , right. not supported!
.
am correct? safe ignore qt compiler warning in specific scenario? above construct, involving virtual multiple inheritance directly qobject, safe , supported in qt?
no, multiple inheritance qobject
not supported qt in way.
the problem not virtual inheritance, it's qt's meta-object system. each qobject
base class has associated qmetaobject
manages signals, slots, properties, etc, , each meta-object knows parent qobject
e.g. signals exist in parent classes can handled. qt moc not able deal multiple inheritance qobject
or of sub-classes.
Comments
Post a Comment