首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >追加和迭代QList

追加和迭代QList
EN

Stack Overflow用户
提问于 2012-02-17 20:00:27
回答 2查看 7.5K关注 0票数 5

我的QList保存指向类的指针。我试图遍历QList,但是它的所有元素似乎只包含我分配给QList的最后一个指针。

代码:

代码语言:javascript
复制
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";
}

产出:

代码语言:javascript
复制
Mel
Mel
Mel

我没有使用.append(),而是尝试了以下方法,但是它没有工作:

  • myList.push_back("zoe");
  • myList << "zoe";
  • myList += "zoe";

fooClass.cpp

代码语言:javascript
复制
QString name = "";

QString fooClass::getName()
{
    return name;
}

fooClass::fooClass(QString newName)
{
    name = newName;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-17 20:15:44

根据您显示的代码,您的name是全局变量。这意味着,对于所有的name实例,它只是程序中的一个fooClass变量。每次你执行

代码语言:javascript
复制
name = newName;

您可以更改该变量的值。

如果希望每个fooClass都有自己的名称,则应该使name变量成为fooClass的成员,如下所示:

代码语言:javascript
复制
class fooClass
{
public:
    //some stuff here
private:
    QString name;
};
票数 4
EN

Stack Overflow用户

发布于 2012-02-17 20:19:46

问题不在您的列表中,请在标题中指定您的fooClass的私有成员。应该是这样的

代码语言:javascript
复制
class fooClass{
public:
  fooClass(QString newName);
  QString getName();
private:
  QString name;
};

并从cpp中删除全局变量名称。无论如何,您不需要在QString中加上"“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9334600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档