Qt - 从基类继承类

时间:2015-11-16 04:08:35

标签: c++ qt inheritance

我正在和Qt一起进行蛇游戏,到目前为止,我还没有成功地从我的另一个班级继承我的一个班级。我可以让我的类继承Qt类,如NSTextStorage *textStorage = [[NSTextStorage alloc] initWithString:@"hello"]; NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init]; NSTextContainer *textContainer = [[NSTextContainer alloc] init]; [layoutManager addTextContainer:textContainer]; [textStorage addLayoutManager:layoutManager]; //Figure out the bounding rectangle NSRect stringRect = [layoutManager boundingRectForGlyphRange:NSMakeRange(0, [layoutManager numberOfGlyphs]) inTextContainer:textContainer]; QObject,但不是我自己的。

以下是此问题的示例及其错误消息:

QGraphicsRectItem

那我到底错在了什么?为什么它不能正确地继承,为什么不能让我做出#ifndef SNAKE_H #define SNAKE_H #include <QGraphicsView> #include <QGraphicsScene> #include <QWidget> #include <QGraphicsRectItem> #include <QObject> #include <QTimer> #include <QKeyEvent> class Head; class Food; class Base; //Error 1 class Snake: public QGraphicsView, public Base //Error 2 { Q_OBJECT protected: const static int width = 820; const static int height = 500; public: Snake(); QGraphicsScene * scene; QGraphicsView * view; QGraphicsRectItem * border; QGraphicsRectItem * border2; }; #endif // SNAKE_H ////// Errors ///////// /* Error 1: forward declaration of 'class Base' class Base; ^ Error 2: invalid use of incomplete type 'class Base' class Snake: public QGraphicsView, public Base ^ */ 的前瞻声明?

谢谢!

2 个答案:

答案 0 :(得分:2)

而不是class Base您需要包含包含Base类的头文件(即#include "Base.h"

答案 1 :(得分:0)

invalid use of incomplete type 'class Base' class Snake: public QGraphicsView, public Base

编译器错误可能经常是模糊不清的,但事实并非如此。您不能使用前向声明的类,除非指向它。这包括继承它。您需要预先拥有您继承的类,方法是将其包含在源代码中或包含它。