-2

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

基础.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

基础.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 后,我​​似乎无法让它工作。我已经尝试了很多关于更改包含等的事情,因为我完全不知道为什么它没有识别类。

4

1 回答 1

2

如果摩擦继承 Base ,那么您应该输入:

#include "base.h"

在摩擦.h 文件中,如下所示:

#ifndef FRICTION_H
#define FRICTION_H

#include "base.h"

class Friction : public Base{ // THIS IS WHERE THE ERROR IS
  public:
Friction();
};
于 2013-03-10T17:05:23.127 回答