我的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";
}
Run Code Online (Sandbox Code Playgroud)
输出:
Mel
Mel
Mel
Run Code Online (Sandbox Code Playgroud)
除了尝试使用.append()之外,我还尝试了以下方法,但是它没有用:
fooClass.cpp
QString name = "";
QString fooClass::getName()
{
return name;
}
fooClass::fooClass(QString newName)
{
name = newName;
}
Run Code Online (Sandbox Code Playgroud)
根据您显示的代码,您的变量name是全局变量。这意味着,对于 的所有实例,它只是程序中的一个 变量。并且每次执行时namefooClass
name = newName;
Run Code Online (Sandbox Code Playgroud)
您更改该变量的值。
如果您希望每个fooClass变量都有自己的名称,则应该将name变量成员设置fooClass为:
class fooClass
{
public:
//some stuff here
private:
QString name;
};
Run Code Online (Sandbox Code Playgroud)