#pragma once class DrawingContext; class AbstractPainter { public: AbstractPainter(DrawingContext* context) : mDrawingContext(context) { } virtual ~AbstractPainter() = default; virtual void paint() = 0; protected: DrawingContext* mDrawingContext{ nullptr }; };