SS
Size: a a a
SS
ID
VD
MC
VD
D
ID
std::cout
MC
std::cout
и
s
class
зарезервированное словоs
и
D
s
P
и
P
s
Logger *
plogger
= nullptr;
void log_message(const char **msg){
if(plogger){
plogger->print(msg);
} else {
//ignore
}
}
как вариант - ваш класс использует через указатель класс логированияif(ptr)
может быть true, хотя указатель не указывает при этом на объект, попытка разыменования такого указателя - неопределенное поведение. Если мы проинициализировали как nullptr
- тогда if(ptr)
будет true только если указателю в какой-то момент присвоили значение - например в какой-то момент мы решили включить логирование и присвоили указатель на объект логгераvoid set_logger(Logger *ptr){
plogger = ptr;
}теперь при вызове
log_message("Message");
сработает ветка
if(plogger){
plogger->print(msg);
}
если в какой-то момент логгер удалится или просто захотим его отключить присвоив nullptr
- в log_message
снова будет срабатывать ветка которая ничего не делаетID
ID