Qt:"预期的类型说明符"出现在一个设备上而不是另一个设备上

时间:2015-04-28 01:58:46

标签: c++ qt

我和朋友是C ++和Qt的初学者。我们正在一起开展一个Qt项目(直升机游戏),当她向我发送她在计算机上运行的代码时,它运行没有错误,它给了"期望的类型说明符"将指针设置为等于新实例的行上的错误" game"构造函数。代码有问题还是与我的电脑有关?

这是我们的错误出现在主函数中的地方:

#include <QApplication>
#include <QGraphicsItem>
#include <QGraphicsPixmapItem>
#include <QGraphicsView>
#include <QGraphicsScene>

//including for splash screen
#include <QSplashScreen>
#include <QTimer>

//our header files
#include "player.h"
#include "game.h"

game * heli_game;

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);

    QSplashScreen * splash = new QSplashScreen;
    splash->setPixmap(QPixmap(":/images/splash.png"));
    splash->show();

    game * heli_game;
    heli_game = new game::game();   //ERROR HERE: "expected type-specifier"


    QTimer::singleShot(2500, splash, SLOT(close()));

    return a.exec();
}

这是我们的游戏头文件,其中定义了构造函数:

#ifndef GAME
#define GAME

#include <QGraphicsView>
#include <QWidget>
#include <QGraphicsScene>
#include "player.h"
#include "score.h"
//#include "game_over.h"

class game: public QGraphicsView{
    Q_OBJECT
public:
    //constructors
    game(QWidget* parent=NULL);

    //public attributes
    QGraphicsScene * scene;
    player * copter;
    score * Score;
//  game_over * game_over;

};

#endif // GAME

2 个答案:

答案 0 :(得分:0)

new game::game(); 

^只有game类位于名为game的名称空间中时才有意义。因为它不是,编译器无法知道你指的是什么类型。

你可能想要做的是:

new game();

我还应该指出heli_game在主文件中声明了两次。

答案 1 :(得分:0)

heli_game = new game::game();

不正确,应该是

heli_game = new game();

只。您的代码不应该使用任何编译器进行编译。

顺便说一下,你有一个“heli_game * game”全局变量,另一个是main()。