Hey all,
Trying to write a basic logging system, where i send it a string and it will write it to a file.
LogFile.h
#pragma once
#pragma warning(disable : 4996) // Without this i get a warning on sprintf
#include <stdio.h>
#include <fstream>
class CLogFile {
public:
~CLogFile();
// Singleton Accessor
static CLogFile* GetInstance();
// Initialises the Log File
void Init();
// Logs an error message
void LogError( const char* p_strError );
// Logs a Message
void LogMessage( const char* p_strMessage );
// Closes the files and flushes last of data to them
void Close();
std::ofstream m_filErrorLog; // Error log File
std::ofstream m_filMsgLog; // Message Log File
private:
static CLogFile* m_spLogFile;
CLogFile();
};
LogFile.cpp
#include "LogFile.h"
CLogFile::CLogFile() {
}
CLogFile::~CLogFile() {
if(m_spLogFile) {
delete m_spLogFile;
}
}
CLogFile* CLogFile::GetInstance() {
if( m_spLogFile == NULL ) {
m_spLogFile = new CLogFile();
}
return m_spLogFile;
}
// Initialises the Log File
void CLogFile::Init() {
m_filErrorLog.open( "ErrorLog.txt", std::ios::out | std::ios::trunc );
m_filMsgLog.open( "MsgLog.txt", std::ios::out | std::ios::trunc );
}
// Logs an error message
void CLogFile::LogError( const char* p_strError ) {
char szBuffer[1024];
sprintf( szBuffer, "ERROR: %s\n", p_strError );
m_filErrorLog << szBuffer;
m_filErrorLog.flush();
}
// Logs a Message
void CLogFile::LogMessage( const char* p_strMessage ) {
char szBuffer[1024];
sprintf( szBuffer, "Message: %s\n", p_strMessage );
m_filMsgLog << szBuffer;
m_filMsgLog.flush();
}
// Closes the files and flushes last of data to them
void CLogFile::Close() {
m_filErrorLog.flush();
m_filErrorLog.close();
m_filMsgLog.flush();
m_filMsgLog.close();
}
it all compiles fine, but i get an error while linking
LogFile.obj : error LNK2020: unresolved token (0A0002EA) "private: static class CLogFile * CLogFile::m_spLogFile" (?m_spLogFile@CLogFile@@0PAV1@A)
LogFile.obj : error LNK2001: unresolved external symbol "private: static class CLogFile * CLogFile::m_spLogFile" (?m_spLogFile@CLogFile@@0PAV1@A)
Any ideas?
this is written basically the same as my game class which is also a singleton, but i dont get any errors there. Have i missed something?