2013-03-06 52 views
3

在我的代碼我有類McdGraphicsSceneQGraphicsScene繼承,但是當我嘗試將指針傳遞到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

您是否正確實施了所有虛擬方法? – 2013-03-06 12:27:41

回答

8

是否使用McdGraphicsScene的任何forward declarations的代碼?

確保實際的類定義在呼叫站點可見。如果只有前向聲明可用,則調用代碼不能推斷出McdGraphicsScene繼承自QGraphicsScene

相關問題