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