我和朋友是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
答案 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()。