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