gpt4 book ai didi

c++ - Qt:使用另一个参数创建一个新类

转载 作者:太空狗 更新时间:2023-10-29 23:01:19 26 4
gpt4 key购买 nike

我在使用另一个参数实例化新类时遇到问题。

我的问题是在 QList 小行星对象中添加一些东西。在 Qt 中,我有这个错误信息:

cannot convert 'SettingsAsteroid' to 'SettingsAsteroid*' in assignment 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)

最佳答案

基于你的错误

cannot convert 'SettingsAsteroid' to 'SettingsAsteroid*' in assignment this->settingsAsteroid = SettingsAsteroid();

关于代码:

this->settingsAsteroid = SettingsAsteroid();

您正在尝试将 SettingsAsteroid 转换为 SettingsAsteroid*,即:指向 SettingsAsteroid 对象的指针。

因为 GameView 有一个成员 settingsAsteroid,它是一个 SettingsAsteroid*,你需要给它一个指向 SettingsAsteroid< 的指针,而不是 SettingsObject 本身。您可以执行以下操作之一:

this->settingsAsteroid = new SettingsAsteroid();

调用 new 将为所需对象(您的 SettingsAsteroid)分配内存并返回指向该内存的指针,类型为 SettingsAsteroid*。或者,如果您已经有一些 SettingsAsteroid 对象,您可以分配:

SettingsAsteroid sa;
...
this->settingsAsteroid = &sa;

关于c++ - Qt:使用另一个参数创建一个新类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31499255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com