#pragma once
class Drawable;
class RenderTarget {
public:
void draw(const Drawable& drawable);
};
class Drawable {
virtual void draw(RenderTarget& target) const = 0;
class Shape : public Drawable {
void draw(RenderTarget& target) const override;