Я делаю несколько экспериментов на Qt. Я пытаюсь прочитать все свойства, аннотированные с Q_PROPERTY дочернего класса в его родительском классе. Мои классы выглядеть следующим образом:Как родительский класс может видеть свойства своего дочернего класса?
class ParentClass : public QObject
{
Q_OBJECT
Q_PROPERTY(ParentProperty...)
//class stuff...
}
class ChildClass : public ParentClass
{
Q_OBJECT
Q_PROPERTY(ChildProperty...)
//class stuff
}
Теперь я хочу, чтобы прочитать все свойства родительского класса, но я могу читать только родительское свойство. Как я могу получить свойства дочернего класса? Есть ли удобный способ для этого?
Почему, по-вашему, вам это нужно? Родительский класс никогда не должен знать о дочерних классах, поэтому я уверен, что в дизайне вашего класса есть проблема. –
Мое намерение состояло в том, чтобы создать простую в использовании систему ввода/вывода базы данных. Поэтому пользователю просто нужно определить свойства (атрибуты), которые он хочет хранить в базе данных в своем классе, который наследуется от родительского класса, где уже определены некоторые атрибуты. Родительский класс должен читать все свойства своего дочернего элемента и строить таблицы со всеми свойствами в качестве атрибутов. Я мог бы разделить его, но тогда пользователь должен самостоятельно зарегистрировать свой собственный класс собственности. – Paul
Теперь, если пользователь не хочет, чтобы его атрибуты подкласса сохранялись в базе данных? Или что, если он даже не знает, что базовый класс получит доступ к свойствам подкласса? Вы должны скорее создать метод шаблона в базовом классе, а затем вызвать его из подкласса: 'registerProperty (« height », & m_height);' или что-то похожее, в зависимости от того, как работает ваша программа. Но основное правило: ** никогда ** доступ к подклассу из базового класса. Без исключений. –