无法将子类实例作为参数而不是超类传递

You*_*ira 3 c++ polymorphism inheritance qt

在我的代码中,我有McdGraphicsScene继承自的类QGraphicsScene,但是当我尝试将指针传递McdGraphicsSceneQGraphicsView::setScene(QGraphicsScene* scene);我的实例时,我得到以下错误:

../MeriseModeler/merisemodeler/mcdui.cpp: In member function 'void McdUi::setModel(McdModel*)':
../MeriseModeler/merisemodeler/mcdui.cpp:34:42: error: no matching function for call to 'QGraphicsView::setScene(McdGraphicsScene*)'
../MeriseModeler/merisemodeler/mcdui.cpp:34:42: note: candidate is:
In file included from ../../.qt5/5.0.0/gcc/include/QtWidgets/QGraphicsView:1:0,
                 from ../MeriseModeler/merisemodeler/mcdui.cpp:10:
../../.qt5/5.0.0/gcc/include/QtWidgets/qgraphicsview.h:161:10: note: void QGraphicsView::setScene(QGraphicsScene*)
../../.qt5/5.0.0/gcc/include/QtWidgets/qgraphicsview.h:161:10: note:   no known conversion for argument 1 from 'McdGraphicsScene*' to 'QGraphicsScene*'
Run Code Online (Sandbox Code Playgroud)

这是该类的代码

class McdGraphicsScene : public QGraphicsScene
{
    Q_OBJECT

    // Methods and attributs
};
Run Code Online (Sandbox Code Playgroud)

Ale*_*x B 8

您是否使用前向声明McdGraphicsScene

确保在呼叫站点上可以看到实际的类定义.如果只有前向声明可用,则调用代码无法推断McdGraphicsScene继承自QGraphicsScene.