[SOLVED]Need Help: Error " 'CLASS' does not name a type"



  • I have default mainwindow class: mainwindow.h and mainwindow.cpp. I also have my own class Sprite: sprite.h and sprite.cpp. I want to create the object of Sprite class in mainwindow.h but I've got an error : "'Sprite' does not name a type'". I included header file "sprite.h" in mainwindow.h but problem is still there!

    Here is my mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    
    #include <SOME QT HEADERS>
    
    #include "sprite.h"
    
    namespace Game{
        const double version = 0.01;
        const int FPS = 60;
        const int WIDTH = 800;
        const int HEIGHT = 600;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
    private:
        QColor mainGameColor;
        Sprite mainSprite;
        void update();
        void paintEvent(QPaintEvent *event);
    };
    

    ...and sprite.h

    #ifndef SPRITE_H
    #define SPRITE_H
    
    #include <QObject>
    #include "mainwindow.h"
    
    using namespace std;
    
    class Sprite : public QObject
    {
        Q_OBJECT
    public:
        Sprite(QObject *parent = 0,string file = "default.bmp");
        QImage getSprite();
    signals:
    
    public slots:
    
    private:
        QImage image;
        int x;
        int y;
    };
    
    #endif // SPRITE_H
    

    I will be grateful for any advices!


  • Moderators

    You should remove inclusion of mainwindow.h from sprite.h: you have introduced a circular dependency:

    1. The compiler reads mainwindow and encounters sprite.h include
    2. It proceeds to sprite.h, but finds mainwindow.h include there
    3. It goes back to mainwindow.h, as instructed
    4. And you have a loop ;-)

    [edit: changed explanation to numbered list SGaist]



  • Now my program work nice!Thank you for detailed ansewer:)


  • Moderators

    I'm glad to hear that. Happy coding :-)



  • Thanks Sir


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.