【发布时间】:2015-07-19 08:18:57
【问题描述】:
我在用另一个参数实例化一个新类时遇到问题。
我的问题是在 QList Asteroids 对象中添加一些内容。在 Qt 中,我有这个错误消息:
无法在分配中将“SettingsAsteroid”转换为“SettingsAsteroid*” this->settingsAsteroid = SettingsAsteroid();
下面是做这个类的相关文件,我觉得其他类没有关系。
GameView.h 中的数据:
#ifndef GAMEVIEW_H
#define GAMEVIEW_H
#include <QGraphicsView>
#include <QGraphicsItem>
#include <QApplication>
#include <QPushButton>
#include <QList>
#include <QObject>
#include <QString>
#include "Asteroid.h"
#include "SettingsAsteroid.h"
class GameView : public QGraphicsView
{
Q_OBJECT
// Data
int nbAsteroids;
int nbAsteroidsAlive;
SettingsAsteroid* settingsAsteroid;
QList<Asteroid> asteroids;
// Menu
QPushButton *startgame;
// Scène
QGraphicsScene* grfxScene;
public:
GameView();
~GameView();
private slots:
void start();
};
#endif // GAMEVIEW_H
GameView.c 中的源代码:
#include "GameView.h"
#include <iostream>
GameView::GameView()
{
int nbAsteroids = 0;
int nbAsteroidsAlive = 0;
// data de jeu
this->settingsAsteroid = SettingsAsteroid();
//Scene de debut
this->grfxScene = new QGraphicsScene();
grfxScene->setSceneRect(0,0,800,600);
this->grfxScene->addPixmap(QPixmap(":/images/armageddon.jpg"));
setScene(this->grfxScene);
}
GameView::~GameView(){ }
void GameView::start()
{
this->grfxScene->clear();
int nbAsteroids = 4;
int nbAsteroidsAlive = 4;
int i;
for(i=0;i<nbAsteroids;i++) {
asteroids.append(new Asteroid(settingsAsteroid));
}
}
Asteroid.c 的构造函数:
Asteroid::Asteroid(SettingsAsteroid settingsAsteroid)
【问题讨论】:
-
检查这个
this->grfxScene = new QGraphicsScene();并注意区别。 -
我改变了这个:this->settingsAsteroid = new SettingsAsteroid();还有这个:this->asteroids.append(new Asteroid(settingsAsteroid));但它不起作用