オブジェクトへのポインタをQVectorに追加しようとしましたが、後でQVectorにアクセスすると空に見えます。QVectorへのポインタのQVectorの要素の作成とアクセス
ここでは、Villainクラスに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";
}
}
究極の目標は、各手先
#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()が正常に* 1ミニオンを追加しますが、次の時間が関数であるから、項目の数を取得することですいわゆるミニオンは空です。
getMinion(int i)は、minions.at(i)が存在しないためプログラムをクラッシュします。エラーメッセージがある - QVectorに失敗したことをアサート::に:「インデックス範囲外」
#include <QObject>
class Minion : public QObject
{
Q_OBJECT
public:
explicit Minion(QObject *parent = 0);
int getNumItems(){return items;}
private:
int items = 1;
};
なぜ(新しいミニオンは())動作するように見えるが、手下は、すべての空の見えるQVector minions.appendありません私はそれにアクセスしようとする時間?
への参照を返すことであるあなたは、これは私が探していただけの答えですbkausbkありがとうございました。私は私のミニオンクラスで何か間違っていると確信していましたが、明らかになったようです。 – workdamnit