我對Qt沒有太多經驗,但不知何故,我認爲這很奇怪。 編譯與VS2005:QList表演奇怪
class Entry
{
public:
Entry(const QString& aName, bool checked) :
name(aName), isChecked(checked)
{
// empty
};
Entry(const Entry& entry) :
name(entry.name), isChecked(entry.isChecked)
{
// empty
};
Entry& operator=(const Entry& entry)
{
name = entry.name;
isChecked = entry.isChecked;
return *this;
}
QString name;
bool isChecked;
};
typedef QList<conduit::Entry> EntryVector;
當使用EntryVector在以下線,QList作的條目變成一個壞的指針:
void EntryWidget::setEntries(QStringList& names)
{
QStringList::iterator member;
EntryVector list;
for (member = names.begin(); member != names.end(); ++member)
{
Entry entry(*member, false);
list.append(entry);
}
m_model.setEntryData(list);
}
不知何故,entry.name在列表中會成爲一個壞的指針。我的理解是,QList應該能夠支持其模板中的任何數據,但由於某種原因,我還不明白這是行不通的。如果我使用STL向量,一切正常。
任何想法?由於
「不知何故,列表中的entry.name將成爲一個錯誤的指針。」 這是什麼意思?因爲你不使用指針,我不明白這是怎麼發生的。 你可以顯示訪問列表的代碼嗎? – 2010-08-24 21:33:53