#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