Я выполняю рефакторинг моего приложения на C ++.Раньше я использовал такой макрос, как
LOG("something interesting") // 1
LOG("something ended") // 2
LOG("foo: " << bar) // 3
Моя идея заключалась в том, чтобы написать класс Log
примерно так:
Log(std::string _init_message):
init_message(_init_message)
{ PrintLogLine(init_message + " ...");}
~Log()
{ PrintLogLine(init_message + " done.");}
, чтобы получить «автоматическую» запись определенных действий (например, когдаони запускаются, останавливаются + дополнительно время и т. д.), когда я использую его, как
void ActionXYZ() {
Log log("xyz");
// do stuff
}
Я пытаюсь найти способ заставить его работать для случая 3).В Java я мог бы использовать метод, который принимает один аргумент String
, так как компилятор позаботится об автоматическом построении строк.Какие возможности у меня есть в C ++?
Можно ли заставить его работать так, чтобы я мог использовать его как один из вариантов?
// in "do stuff"
log("foo:" + bar); // OR
log << "foo:" << bar;