В оконном приложении в циркулируют сообщения Command(самопальная диспетчеризация):
enum CommandKind{
APP_INIT
,APP_CLOSE
..
};
struct Command{
ComandKind kind;
};
И вот хочеться эти сообщения логировать как-то так:
void OnCommand(Command& cmd)
{
switch( cmd.kind ){
case APP_INIT: /*логируем "APP_INIT"*/ break;
case APP_CLOSE: /*логируем "APP_CLOSE"*/ break;
};
}
Как-бы так ассоциировать с кодом команды строчку текста ? Мне приходит в голову
что-то такое:
struct Command {
ComandKind kind;
const char* text;
ComandK(ComandKind kind,const char* msg):kind(kind),msg(msg){}
} AppInit(APP_INIT,"APP_INIT") //можно макросом
,AppClose(APP_CLOSE,"APP_CLOSE")
..
;
Но тут приходиться вручную создавать объекты Command, что неудобно.
Есть ли решение лучше ?