2013-03-10 2 views
-2

En fait, je suis en train d'hériter tout de friction dans la base (ou même l'inverse) cependant, il n'est pas l'identification des classes je.Problème avec l'héritage 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(){ 
} 

et enfin MAIN.CPP

int main(int argc, char *argv[]){ 
    QApplication a(argc, argv); 
    Base w; 
    w.show(); 

    Friction f; 

    return a.exec(); 
} 

Je reçois l'erreur « attendu nom de la classe avant « { » jeton », je l'ai coupé le projet vers le bas autant que je peut et l'erreur arrive encore et je ne sais vraiment pas pourquoi.

Je suis assez nouveau pour C++ mais je trouve que l'héritage ne pose pas beaucoup de problème sur un programme de base, mais en passant à Qt, je n'arrivais pas à le faire fonctionner. J'ai essayé beaucoup de choses concernant le changement des inclusions etc etc car je suis complètement inconscient de savoir pourquoi il n'identifie pas la classe.

Répondre

2

Si la friction hérite de base, que vous devez mettre:

#include "base.h" 

dans le fichier friction.h, comme ceci:

#ifndef FRICTION_H 
#define FRICTION_H 

#include "base.h" 

class Friction : public Base{ // THIS IS WHERE THE ERROR IS 
    public: 
Friction(); 
}; 
+1

Et, sans doute, vous avez oublié '' Q_OBJECT' dans Friction' – troyane

+1

Oh merci beaucoup. Désolé pour mon ignorance, j'ai seulement commencé C++ il y a 2 jours. – iyop45

+0

@ user1 Vous devriez apprendre le C++ bien avant d'apprendre Qt. Qt a des paradigmes d'architecture forts basés principalement sur ce que le «moc» peut et ne peut pas faire, ce qui signifie que vous pouvez apprendre une vision très faussée et étroite de la langue. – cmannett85