Как бы сделать такие enum 'ы..
От: Аноним  
Дата: 31.01.08 12:57
Оценка:
В оконном приложении в циркулируют сообщения 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, что неудобно.
Есть ли решение лучше ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.