C++ 创建和访问QObject指针的QVector元素
我尝试将指向对象的指针添加到QVector,但当我稍后访问QVector时,它似乎是空的 下面是一个代码的精简版本,其中的问题是反派类的QVector为Minion*C++ 创建和访问QObject指针的QVector元素,c++,qt,qvector,C++,Qt,Qvector,我尝试将指向对象的指针添加到QVector,但当我稍后访问QVector时,它似乎是空的 下面是一个代码的精简版本,其中的问题是反派类的QVector为Minion* void Widget::mainFunction() { int totalMinions = 5; for(int i = 0; i < totalMinions; i++) { evilOrganisation.getVillain().addMinion(); }
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";
}
}
void小部件::mainFunction()
{
int totalMinions=5;
对于(int i=0;i qDebug()方法getVillain返回一个Villain的副本。所以每次你有一个空的QVector。还有一个内存泄漏。你不管理仆从向量指针
你应该在堆上创建反派()或通过引用返回对象。方法getVillain返回反派的一个副本。所以每次你有一个空的QVector。还有内存泄漏。你不管理minions向量指针
您应该在堆上创建反派()或通过引用返回对象。您必须实现反派
复制构造函数。每次调用反派::getVillain()
时,您将获得类成员的副本-反派
对象,默认情况下包含一个空的
QVector`
另一个想法是只返回一个对你的反派的引用,比如
Villain& getVillain() {
return villain;
}
您必须实现Villain
copy构造函数。每次调用getVillain()
时,您将获得类成员的一个副本-Villain
对象,默认情况下该对象包含一个空的
QVector`
另一个想法是只返回一个对你的反派的引用,比如
Villain& getVillain() {
return villain;
}
谢谢你,这正是我一直在寻找的答案。我确信我在我的仆从课上做错了什么,但现在我明白了。谢谢你,这正是我一直在寻找的答案。我确信我在我的仆从课上做错了什么,但现在我明白了。
#include <QObject>
class Minion : public QObject
{
Q_OBJECT
public:
explicit Minion(QObject *parent = 0);
int getNumItems(){return items;}
private:
int items = 1;
};
Villain& getVillain() {
return villain;
}