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

C++ Qt:使用另一个参数创建一个新类,c++,qt,qlist,C++,Qt,Qlist,我在用另一个参数实例化一个新类时遇到问题 我的问题是在QList小行星对象中添加一些内容。在Qt中,我收到以下错误消息: 无法将分配中的“SettingsAsteroid”转换为“SettingsAsteroid*” this->settingsAsteroid=settingsAsteroid() 下面是做这件事的班级的相关文件,我认为其他班级是不相关的 GameView.h中的数据: #ifndef GAMEVIEW_H #define GAMEVIEW_H #include <QG

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

我的问题是在QList小行星对象中添加一些内容。在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
基于你的错误

无法在赋值
this->SettingsAsteroid=SettingsAsteroid()中将“
SettingsAsteroid
”转换为“
SettingsAsteroid*

关于守则:

this->settingsAsteroid = SettingsAsteroid();
您正试图将
SettingsAsteroid
转换为
SettingsAsteroid*
,即:指向
SettingsAsteroid
对象的指针

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

this->settingsAsteroid = new SettingsAsteroid();
调用
new
将为所需对象(您的
setingsasteroid
)分配内存,并返回指向该内存的指针,类型为
setingsasteroid*
。或者,如果您已经有了一些
设置元数据
对象,您可以指定

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

检查这个
this->grfxsecene=new qgraphicscene()并注意差异。我已经更改了:this->settingsAsteroid=newsettingsasteroid();还有这个:this->asteroids.append(新小行星(setingsasteroid));但它不工作,我尝试:在构造函数中:setingsasteroidsa;此->设置星形=&sa;在start()inti中;对于(i=0;iasteroids.append(Asteroid(*settingsAsteroid));},但现在我有不同的错误:erreur:'QObject::QObject(const QObject&)'是私有的Q\u禁用复制(QObject)^您正在尝试复制
QObject
(或某个派生类)但是它的副本构造函数是私有的。这个问题不是问那个问题的地方,如果你有更多的问题,你应该问另一个问题。你的
setingsTeroid
问题已经解决了。在问新问题之前,试着将你的新问题简化为a。这样做有助于他人的帮助,通常也有助于你发现问题你自己解决这个问题
this->settingsAsteroid = new SettingsAsteroid();
SettingsAsteroid sa;
...
this->settingsAsteroid = &sa;