2013-03-10 67 views
-2

基本上我想继承了从摩擦到基地(甚至反过来),但是,它不识别我放在类。问题与Qt的继承

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后,我似乎无法使它工作。我已经尝试了很多关于改变包含等等的东西,因为我完全没有意识到为什么它不能识别这个类。

回答

2

如果摩擦继承基地,应该比你放:

#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(); 
}; 
+1

和可能,你在'Friction' – troyane 2013-03-10 17:06:58

+1

忘了'Q_OBJECT'好的非常感谢。对不起,我的无知我只在2天前开始C++。 – iyop45 2013-03-10 17:08:00

+0

@ user1在学习Qt之前,您应该学习C++。 Qt具有强大的架构范式,主要基于'moc'可以做什么和不可以做什么,这意味着您可以学习相当多的倾斜和狭隘的语言视图。 – cmannett85 2013-03-10 17:21:54