Почему пропадает член класса?

В общем дело такое, есть класс
#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 &param );
};

#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 &param)
{
    if( ! params.contains( param ) )
    {
        params.append( param ); //Тут все верно. И если после этого вывести param то видим что лист сохраняет строки.
        return true;
    }

    return false;
}


В общем суть такая. Наследуюсь public от этого класса, в конструкторе указываю перечень необходимых параметров карты и указатель на саму карту. По желанию добавляю элементы с помощью addValid( const QString &param ).

При вызове isValid() в теле метода должно проверятся наличие параметров в карте, и если какого либо параметра недостает, то выкидываем FALSE. НО! В теле метода список строк params не существует! Пробовал выделить память в куче при инициализации - дак вообще говорит мол пустой указатель.. Кто вкурсе что за фигня?

Версия Qt Creator 3.4.2 (opensource)
Основан на Qt 5.5.0 (MSVC 2013, 32 бита)
  • Вопрос задан
  • 289 просмотров
Решения вопроса 2
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Покажите как создаете свой класс, как вызываете isValid() и конструктор своего класса. Не удаляете ли вы экземпляр своего класса в какой-то момент? Ну и советую пройтись отладчиком.
Ответ написан
Nipheris
@Nipheris Куратор тега C++
Вы случайно не забыли там вызвать конструктор базового класса QMapValidator в конструкторе дочернего Class2? Потому что других странностей я не вижу, а вот если вы все-таки забыли, то отработает конструктор по умолчанию (а он есть, если б не было - была б ошибка компиляции), который, конечно, ничего вам не добавит.
По идее addValid все-таки должен работать - с ним все ок или та же проблема?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы