Недоступный QString в конструкторе

Я как-то напутал с подклассами в большом проекте. Я понял, что проблема была где-то в процессе создания подклассов, что привело к недоступностиQString in в конструкторе Subclass1,

Почему я не могу получить доступ к QString, если я установил точку останова на test = in;?

Windows 7 64bit, Qt 5.6.2, MinGW 4.9.2

(Возможно просто какая-то неосторожная ошибка)

Update1: забавная часть теперь, в также не доступна в конструкторе суперкласса, но действительна в second(in),

Update2: добавлены изображения

main.h

#ifndef MAIN_H
#define MAIN_H

#include <QObject>

class Superclass : public QObject
{
    Q_OBJECT
public:
    explicit Superclass(QString in, QObject *parent = 0) : QObject(parent), second(in)
    {
        QString test = in;
    }
protected:
    QString second;
};

class Subclass1 : public Superclass
{
    Q_OBJECT
public:
    Subclass1(QString in, QObject *parent = 0) : Superclass(in, parent)
    {
        test = in;
    }

protected:
    QString test;
};

class Manager : public QObject
{
    Q_OBJECT
public:
    explicit Manager(QObject *parent = 0) : QObject(parent)
    {
    }

public slots:
    void runinvoked()
    {
        ptr1 = new Subclass1("test",this);
    }

    void rundirect()
    {
        ptr2 = new Subclass1("test",this);
    }

protected:
    Superclass *ptr1;
    Superclass *ptr2;
};

#endif // MAIN_H

main.cpp

#include "main.h"

#include <QCoreApplication>
#include <QObject>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Manager *m = new Manager();
    m->rundirect();
    QMetaObject::invokeMethod(m,"runinvoked");
    return a.exec();
}

Суперкласс с пустым QString inправильно назначен QString second

Подкласс ж / недоступный QString in

0 ответов

Другие вопросы по тегам