我的 QList 包含指向一个类的指针。我试图遍历 QList,但它的所有元素似乎只包含我分配给 QList 的最后一个指针。
代码:
QList<fooClass*> myList;
fooClass *pNewFooA = new fooClass("Bob");
myList.append(pNewFooA);
fooClass *pNewFooB = new fooClass("Jen");
myList.append(pNewFooB);
fooClass *pNewFooC = new fooClass("Mel");
myList.append(pNewFooC);
QList<fooClass*>::iterator i;
for (i = myList.begin(); i != myList.end(); i++) {
cout << (*i)->getName() << "\n";
}
输出:
Mel
Mel
Mel
我没有使用 .append(),而是尝试了以下方法,但没有成功:
- myList.push_back("佐伊");
- 我的列表<< "佐伊";
- myList += "佐伊";
fooClass.cpp
QString name = "";
QString fooClass::getName()
{
return name;
}
fooClass::fooClass(QString newName)
{
name = newName;
}
最佳答案
根据您显示的代码,您的名称
是全局 变量。这意味着,对于fooClass
的所有 实例,它是您程序中唯一 name
变量。每次你执行
name = newName;
您更改该变量的值。
如果您希望每个 fooClass
都有自己的名称,您应该像这样使 fooClass
的 name
变量成员:
class fooClass
{
public:
//some stuff here
private:
QString name;
};
关于c++ - 追加和迭代 QList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9334600/