2013-03-06 5 views
3

В моем коде у меня есть класс McdGraphicsScene, который наследуется от QGraphicsScene, но когда я пытаюсь передать указатель на экземпляр McdGraphicsScene к QGraphicsView::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*' 

здесь код класса

class McdGraphicsScene : public QGraphicsScene 
{ 
    Q_OBJECT 

    // Methods and attributs 
}; 
+2

Правильно ли вы реализовали все виртуальные методы? –

ответ

8

вы используете любой forward declarations из McdGraphicsScene?

Убедитесь, что фактическое определение класса видно на сайте вызова. Если есть только доступная декларация, вызывающий код не может вывести, что McdGraphicsScene наследует от QGraphicsScene.

Смежные вопросы