#ifndef SINGLETON_H #define SINGLETON_H #include #include class Singleton { public: static Singleton &getInstance(); ~Singleton(); inline void showMessage() const { std::cout << message;} inline void updateMessage(const std::string &m) { message = m;} private: std::string message; // Don't allow copying of this class // Ignore -Wreturn-type warnings; It's intentional for this pattern #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wreturn-type" Singleton() { message = "New singleton\n";} Singleton(const Singleton &) {} Singleton &operator=(const Singleton &) {} // Unmatched pop reverts GCC to commandline options #pragma GCC diagnostic pop #pragma GCC diagnostic pop }; #endif // SINGLETON_H