Уважаемые StackOverflowers,
Я создал одноэлементный класс с именем Log
, но он не вызывает конструктор. Класс используется для печати последовательных команд в зависимости от m_LogLevel
. Я хочу, чтобы конструктор вызывался один раз, когда getInstance()
вызывается впервые. По какой-то причине конструктор, кажется, никогда не вызывается, что я делаю не так?
Заранее спасибо!
Log.h:
class Log {
private:
int m_LogLevel = LOGLEVEL;
static Log* instance;
Log();
~Log();
public:
static Log* getInstance();
void debug(String);
};
Log.cpp:
Log* Log::instance = nullptr;
Log::Log() {
DEBUG_PRINT("Log level: ");
DEBUG_PRINTLN(m_LogLevel);
}
Log::~Log() {
}
Log* Log::getInstance() {
if (instance == 0) {
instance = new Log();
}
return instance;
}
void Log::debug(String message) {
if(m_LogLevel >= LogLevelDebug) {
DEBUG_PRINT("[DEBUG]: ");
DEBUG_PRINTLN(message);
}
}
main.cpp:
#define DEBUG_PRINT(x) Serial.print (x)
#define DEBUG_PRINTLN(x) Serial.println (x)
#define LOGLEVEL 3
#include <Arduino.h>
#include "Log.h"
Log* pLog = Log::getInstance();
void setup() {
Serial.begin(115200);
pLog->debug("Hello world");
}
void loop() {
}