我的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(),而是尝试了以下方法,但是它没有工作:
fooClass.cpp
QString name = "";
QString fooClass::getName()
{
return name;
}
fooClass::fooClass(QString newName)
{
name = newName;
}发布于 2012-02-17 20:15:44
根据您显示的代码,您的name是全局变量。这意味着,对于所有的name实例,它只是程序中的一个fooClass变量。每次你执行
name = newName;您可以更改该变量的值。
如果希望每个fooClass都有自己的名称,则应该使name变量成为fooClass的成员,如下所示:
class fooClass
{
public:
//some stuff here
private:
QString name;
};发布于 2012-02-17 20:19:46
问题不在您的列表中,请在标题中指定您的fooClass的私有成员。应该是这样的
class fooClass{
public:
fooClass(QString newName);
QString getName();
private:
QString name;
};并从cpp中删除全局变量名称。无论如何,您不需要在QString中加上"“。
https://stackoverflow.com/questions/9334600
复制相似问题