У меня возникла очень странная проблема. Он аналогичен описанному здесь: http://www.qtforum.org/article/20389/problems-with-qlist.html. Когда я объявляю QList в своем заголовочном файле, и я пытаюсь использовать его в исходном файле, программа выходит из строя с ошибкой сегментации.Объявление QList в файле заголовка вызывает ошибку сегментации в исходном файле
Вот отрывок:
threads.h файл:
class Corr2DThread
{
private:
QList<Sequence *> seqs_;
...
};
threads.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 локально, everythig нормально, как и показанном в приведенном ниже кодексе:
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-гуру может объяснить, что здесь происходит?
Qt не бросает исключения C++, не могли бы вы быть более конкретными относительно ошибки, которую вы получили? –
Ошибка сегментации –
Вы пытались запустить его в отладчик? Что такое обратная линия? –