Недоступный 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