我遇到了一个非常奇怪的问题。它与此处描述的类似:http ://www.qtforum.org/article/20389/problems-with-qlist.html 。当我在头文件中声明 QList 并尝试在源文件中使用它时,程序因分段错误而失败。
这是一个片段:
线程.h 文件:
class Corr2DThread
{
private:
QList<Sequence *> seqs_;
...
};
线程.cpp 文件:
void Corr2DThread::addSequence(Sequence *seq)
{
QLOGX("Thread " << idx_ << " adding new sequence (" << seqs_.size() << "), name: '" << seq->name() << "'"); //this code fails due to call seqs_.size()
QLOGINC;
int activeCount = seq->activeItems();
Q_ASSERT(activeCount > 0);
QLOG("Contains " << activeCount << " active object images");
seqs_.append(seq);
QLOGDEC;
}
但是,如果我在本地声明 QList,一切正常,如下面的代码所示:
void Corr2DThread::addSequence(Sequence *seq)
{
QList<Sequence *> seqs_;
QLOGX("Thread " << idx_ << " adding new sequence (" << seqs_.size() << "), name: '" << seq->name() << "'");
QLOGINC;
int activeCount = seq->activeItems();
Q_ASSERT(activeCount > 0);
QLOG("Contains " << activeCount << " active object images");
seqs_.append(seq);
QLOGDEC;
}
我花了很多时间试图让这个工作,没有运气/知识。任何 QT-guru 都可以解释这里发生了什么?