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