J'essaie d'ajouter des pointeurs sur des objets à un QVector mais lorsque j'accède au QVector plus tard, il semble être vide.Création et accès à des éléments d'un QVector de pointeurs vers QObjects
Voici une version allégée du code avec le problème où la classe Villain a un QVector of Minion *.
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";
}
}
Le but ultime est d'obtenir le nombre d'éléments de chaque sbire
#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() ajoute avec succès 1 Minion *, mais la prochaine fois que la fonction est appelé minions est vide. GetMinion (int i) bloque le programme car minions.at (i) n'existe pas. Lorsque le message d'erreur est - échec VALOIR dans QVector :: à: « indice hors de portée »
#include <QObject>
class Minion : public QObject
{
Q_OBJECT
public:
explicit Minion(QObject *parent = 0);
int getNumItems(){return items;}
private:
int items = 1;
};
Alors pourquoi ne minions.append (nouveau Minion()) semblent fonctionner, mais les sbires QVector semble vide tous les temps j'essaie d'y accéder?
Merci bkausbk c'est juste la réponse que je cherchais. J'étais sûr que je faisais quelque chose de mal dans ma classe Minion mais il semble évident maintenant je le vois. – workdamnit