Promises are made to be kept: we will now transform the SysInfo class into a singleton. C++ offers many ways to implement the singleton design pattern. We will explain one of them here. Open the SysInfo.h file and make the following changes:
class SysInfo { public: static SysInfo& instance(); virtual ~SysInfo(); virtual void init() = 0; virtual double cpuLoadAverage() = 0; virtual double memoryUsed() = 0; protected: explicit SysInfo(); private: SysInfo(const SysInfo& rhs); SysInfo& operator=(const SysInfo& rhs); };
The singleton must guarantee that there will be only one instance of the class and that this instance will be easily accessible from a single access point.
So the first thing to do is to change the visibility of the constructor to protected. This way, only this...