January 21Jan 21 In today's post, I like to touch on a controversial topic: singletons. While I think it is best to have a codebase without singletons, the real-world shows me that singletons are often part of codebases. Singleton done right in C++ by Andreas Fertig From the article: Let's use a usage pattern for a singleton that I see frequently, a system-wide logger. A simple implementation can look like the following code: class Logger { Logger() = default; public: static Logger& Instance() { static Logger theOneAndOnlyLogger{}; return theOneAndOnlyLogger; } void Info(std::string_view msg) { std::print("Info: {}", msg); } void Error(std::string_view msg) { std::print("Error: {}", msg); } }; The key parts for a singleton in C++ are that the constructor is private and an access function that is static. With that, you ensure that a singleton object, here Logger can only be constructed by calling Instance, essentially limiting the number of Logger objects to a single one. You're using such a Logger like this: Logger::Instance().Info("A test"); View the full article
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.