virtual void log(string logText, int debugLevel, string threadName = "") = 0;
не реализовано в классе DLog.Вы должны реализовать это, потому что это чисто виртуальный в базовом классе.
Вы, вероятно, имели в виду это при первой перегрузке log
в DLog
:
virtual void log(string logText, int debugLevel, string /*threadname*/)
{
Log(const_cast<char*>(logText.c_str()));
}
РЕДАКТИРОВАТЬ: Вы такжене реализовали перегрузку
virtual void log(int debugLevel, char* fmt, ...) = 0;
Обратите внимание, что использование const_cast
- очень плохая идея и неопределенное поведение.Вы можете получить четко определенное поведение, выполнив что-то вроде этого:
virtual void log(string logText, int debugLevel, string /*threadname*/)
{
logText.push_back('\0'); // Add null terminator
Log(&logText[0]); // Send non-const string to function
logText.pop_back(); // Remove null terminator
}
Хотя еще лучше, просто сделайте "Log" const-правильным во-первых.