У меня есть класс, давайте назовем его A, и в пределах этого определения класса у меня есть следующее:
static QPainterPath *path;
То есть я объявляю статический (общеклассовый) указатель на объект пути; у всех экземпляров этого класса теперь будет один и тот же общий элемент данных. Я хотел бы иметь возможность опираться на этот класс, подклассифицировать его в более специализированные формы, многоуровневое поведение и каждый класс имеет свой уникальный объект пути (но не нужно повторять скучные биты, такие как вычисление ограничивающих рамок или вызов процедур рисования). ).
Если я создаю его подкласс для создания класса F (например), я хочу, чтобы F использовал унаследованные процедуры рисования из A, но использовал статический (общеклассовый) объект пути, объявленный в F. Я попытался получить объявление выше в приватном разделе (и повторение его в производном классе F), и попытка иметь его в защищенном разделе, все без удовольствия.
Я могу понять, почему это происходит:
void A::paint() {
this->path...
ссылается на A :: path вместо F :: path, даже если объект принадлежит классу F.
Существует ли элегантный способ обойти это и позволить каждому классу поддерживать статический объект пути, при этом все еще используя код рисования, определенный в базовом классе, и позволяя всем классам (кроме, возможно, базового класса) быть реальными и создаваемыми