Qt中的继承问题
Posted
技术标签:
【中文标题】Qt中的继承问题【英文标题】:Issue with inheritance in Qt 【发布时间】:2013-03-10 17:03:35 【问题描述】:基本上,我试图将所有内容从摩擦继承到基础(甚至相反),但是,它没有识别我放入的类。
base.h
#ifndef BASE_H
#define BASE_H
#include <QMainWindow>
namespace Ui
class Base;
class Base : public QMainWindow
Q_OBJECT
public:
explicit Base(QWidget *parent = 0);
~Base();
private:
Ui::Base *ui;
;
#endif // BASE_H
摩擦力.h:
#ifndef FRICTION_H
#define FRICTION_H
class Friction : public Base // THIS IS WHERE THE ERROR IS
public:
Friction();
;
#endif // FRICTION_H
base.cpp
#include "friction.h"
#include "base.h"
#include "ui_base.h"
Base::Base(QWidget *parent) :QMainWindow(parent),ui(new Ui::Base)
ui->setupUi(this);
Base::~Base()
delete ui;
摩擦力.cpp
#include "friction.h"
#include "base.h"
#include "ui_base.h"
Friction::Friction()
最后是 main.cpp
int main(int argc, char *argv[])
QApplication a(argc, argv);
Base w;
w.show();
Friction f;
return a.exec();
我收到错误“'' token 之前的预期类名”,我已尽我所能削减项目,但错误仍然出现,我真的不知道为什么。
我对 c++ 还很陌生,但是我发现继承在基本程序上并不是什么大问题,但是在迁移到 Qt 后,我似乎无法让它工作。我已经尝试了很多关于更改包含等的事情,因为我完全不知道为什么它没有识别类。
【问题讨论】:
【参考方案1】:如果摩擦继承了 Base ,那么你应该输入:
#include "base.h"
在friction.h文件中,像这样:
#ifndef FRICTION_H
#define FRICTION_H
#include "base.h"
class Friction : public Base // THIS IS WHERE THE ERROR IS
public:
Friction();
;
【讨论】:
而且,您可能在Friction
中忘记了Q_OBJECT
哦,非常感谢。抱歉我的无知我2天前才开始使用c++。
@user1 在学习 Qt 之前,您应该先学习 C++。 Qt 具有强大的架构范式,主要基于 moc
能做什么和不能做什么,这意味着您可能会学习到相当偏颇和狭隘的语言观点。以上是关于Qt中的继承问题的主要内容,如果未能解决你的问题,请参考以下文章