#pragma once namespace crepe { class System { public: static System & get_instance(); virtual void update() = 0; protected: System() {}; virtual ~System() {}; private: // singleton System(const System &) = delete; System(System &&) = delete; System & operator=(const System &) = delete; System & operator=(System &&) = delete; }; } // namespace crepe