Tha*_*lia 7 c++ inheritance qt multiple-inheritance
我想为某些对象实现自定义行为.
为此,让我的项目(继承自QGraphicsItem)实现一些接口.
class SomeParentItem 
{ 
    SomeParentItem(bool x) { x = true; } 
    void function1() {}
};
class SomeInterface
{
    virtual void function2() = 0;
};
class XYZItem : public QGraphicsXYZItem, public SomeParentItem, public SomeInterface
{
    XYZItem(bool x):SomeParentItem(x) {}
    virtual void function2() { x = false; }
};
class MPQItem : public QGraphicsMPQItem, public SomeParentItem
{
    MPQItem (bool x):SomeParentItem(x) {}
};
从外面看,我以为我就是这么做的
SomeInterface* item1 = dynamic_cast<SomeInterface*>(item);
if(item1 == NULL)
    item->function1(); 
else
    item1->function2();  
不幸的是,这会崩溃...通常......所以我正在创建一个标志来测试,如果标志是真的,那么只有敢于施放.
但我一直在想,它不应该崩溃.所以我勇敢再次尝试,这次是在一个QWidget孩子.而不是崩溃我得到了
QWidget::insertAction: Attempt to insert null action
这是if(item1 == NULL)给出这个信息的测试......
如何正确检查我的项目是否实现SomeInterface?
注意:item不能为空.
Fré*_*lva -2
一些简单的事情怎么样:
class SomeInterface
{
    virtual void function2() = 0;
    virtual qint32 role() =0;
};
并为自定义行为返回不同的 int ?