В общем дело такое, есть класс
#ifndef QMAPVALIDATOR_H
#define QMAPVALIDATOR_H
#include <QObject>
#include <QStringList>
#include <QVariantMap>
class QMapValidator
{
private:
QStringList params;
QVariantMap *valider;
public:
QMapValidator();
QMapValidator( QStringList initial, QVariantMap *valider );
bool isValid();
protected:
bool addValid( const QString ¶m );
};
#endif // QMAPVALIDATOR_H
#include "qmapvalidator.h"
QMapValidator::QMapValidator()
{
}
QMapValidator::QMapValidator(QStringList initial, QVariantMap *valider)
{
params = initial;
this->valider = valider;
}
bool QMapValidator::isValid()
{
qDebug() << params ; //Тут объекта уже не существует. ???
if( params.isEmpty() )
{
qDebug() << "List is empty"; //Соответственно видим это..
return false;
}
foreach( QString param, params )
{
qDebug() << param;
if( ! valider->contains( param ) )
return false;
}
return true;
}
bool QMapValidator::addValid(const QString ¶m)
{
if( ! params.contains( param ) )
{
params.append( param ); //Тут все верно. И если после этого вывести param то видим что лист сохраняет строки.
return true;
}
return false;
}
В общем суть такая. Наследуюсь public от этого класса, в конструкторе указываю перечень необходимых параметров карты и указатель на саму карту. По желанию добавляю элементы с помощью addValid( const QString ¶m ).
При вызове isValid() в теле метода должно проверятся наличие параметров в карте, и если какого либо параметра недостает, то выкидываем FALSE. НО! В теле метода список строк params не существует! Пробовал выделить память в куче при инициализации - дак вообще говорит мол пустой указатель.. Кто вкурсе что за фигня?
Версия Qt Creator 3.4.2 (opensource)
Основан на Qt 5.5.0 (MSVC 2013, 32 бита)