With the help of google I made a singleton logging class which is:
class Log{
public:
    void Initialize(const char* fileName, int logLevel, ...);
    void outString(const char* str, ...);
    void outError(const char* str, ...);
    void outWarning(const char* str, ...);
    static Log* GetInstance() 
    {
        if (!m_instance)
            m_instance = new Log();
        return m_instance;
    }
private:
    Log() {}
    Log(const Log&);
    Log& operator=(const Log&); 
private:
    static Log *m_instance;
    void SetColor(bool stdout_stream, Color color);
    string getCurrentTime();
    void ResetColor(bool stdout_stream);
    int m_logLevel;
    ofstream *m_file;
};
Now I want to know what the * is here : static Log *m_instance; Why do we set it as a pointer ? I don't really understand. I mean, what will it point to ?
 
     
    