привет, я пытаюсь отправить QList в качестве параметра другому классу, но по какой-то причине я получил нарушение доступа для чтения...
CompareTimeChannel.h
class CompareTimeChannel : public IDataChannel
public:
// @brief The method used to receive the list
void setData(const QList< QSharedPointer<core::ITrackSection> > & sections);
// @brief The list
QList< QSharedPointer<core::ITrackSection> > _sections;
};
CompareTimeChannel.cpp
// @brief Empty constructor
CompareTimeChannel::CompareTimeChannel()
{
}
void CompareTimeChannel::setData(const QList< QSharedPointer<core::ITrackSection> > & sections)
{
//_sections = *new QList< QSharedPointer<core::ITrackSection> > ();
_sections.clear();
_sections.append(sections);
}
Запуск этого кода вызовет Exception at 0x31cc78d, code: 0xc0000005: read access violation at: 0x4, flags=0x0
на _sections.clear();
Я пытался инициализировать список раньше (закомментированная строка _sections = *new QList<...>
), но исключение выдается то же самое.
Ответ был бы очень признателен...
ИЗМЕНИТЬ
Хорошо, это исправлено!
Во-первых, как сказал @AndreasT, мне пришлось инициализировать конструктор QList по умолчанию.
Затем, согласно ответу @ 10WaRRioR01, проблема возникает из-за CompareTimeChannel
, который не был инициализирован при первом вызове метода. Исправлено с помощью:
CompareTimeChannel* chan = static_cast<CompareTimeChannel*>(channel);
Q_ASSERT(chan);
if (chan) {
chan->setData(sections);
}
else {
qDebug() << "Dynamic cast failure";
}
Всем спасибо, ребята!