Ich versuche, einem QVector Zeiger auf Objekte hinzuzufügen, aber wenn ich später auf den QVector zugreife, scheint er leer zu sein.Erstellen und Zugreifen auf Elemente eines QVectors von Zeigern auf QObjects
Hier ist eine abgespeckte Version des Codes mit dem Problem, wo die Villain-Klasse einen QVector von Minion * hat.
void Widget::mainFunction()
{
int totalMinions = 5;
for(int i = 0; i < totalMinions; i++)
{
evilOrganisation.getVillain().addMinion();
}
for(int i = 0; i < totalMinions; i++)
{
qDebug() << "Minion " << i << " Has " << evilOrganisation.getVillain().getMinion(i)->getNumItems()<< " items";
}
}
Das ultimative Ziel ist es, die Anzahl der Elemente von jedem Günstling
#include <QObject>
#include "villain.h"
class EvilOrganisation : public QObject
{
Q_OBJECT
public:
explicit EvilOrganisation(QObject *parent = 0);
Villain getVillain(){return villain;}
private:
Villain villain;
};
__
#include <QVector>
#include "minion.h"
class Villain
{
public:
Villain();
void addMinion(){minions.append(new Minion());}
Minion* getMinion(int i){return minions.at(i);}
private:
QVector<Minion*> minions;
};
addMinion() erfolgreich anhängt 1 Minion * zu erhalten, aber das nächste Mal die Funktion genannt Minions ist leer.
getMinion (int i) stürzt das Programm ab, da minions.at (i) nicht existiert. Wo ist die Fehlermeldung - Fehler in QVector ASSERT :: an: "index out of range"
#include <QObject>
class Minion : public QObject
{
Q_OBJECT
public:
explicit Minion(QObject *parent = 0);
int getNumItems(){return items;}
private:
int items = 1;
};
Warum (neu Minion()) erscheinen, aber die Schergen funktionieren minions.append QVector jeder leer erscheinen Mal versuche ich darauf zuzugreifen?
Danke bkausbk dies nur die Antwort für die ich suchte. Ich war mir sicher, dass ich in meiner Minion-Klasse etwas falsch gemacht habe, aber es scheint jetzt offensichtlich, dass ich es sehe. – workdamnit