Qt中的继承问题

时间:2013-03-10 17:03:35

标签: c++ qt inheritance

基本上我试图继承从摩擦到基础(甚至反过来)的所有东西,但是,它没有识别我放入的类。

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

friction.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;
}

friction.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();
}

我收到错误“'''令牌之前的预期类名”,我已经尽可能地减少了项目,错误仍然出现,我真的不知道为什么。

我对c ++相当新,但是我发现继承并不是基本程序的问题,但是在转移到Qt后,我似乎无法使其工作。我已经尝试过很多关于改变包含等等的事情,因为我完全没有注意到为什么它没有识别出这个类。

1 个答案:

答案 0 :(得分:2)

如果摩擦继承了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();
};