#pragma once namespace J3ML::Geometry { class GeometricPrimitive { public: protected: private: }; class Shape { public: virtual ~Shape() = default; //Polymorphic for dynamic_cast. protected: private: }; class Shape2D { public: virtual ~Shape2D() = default; protected: private: }; }