Re: Как бы сделать такие enum 'ы..
От: AndryBlack Россия  
Дата: 31.01.08 13:40
Оценка: 4 (2)
Здравствуйте, Аноним, Вы писали:


А>Как-бы так ассоциировать с кодом команды строчку текста ? Мне приходит в голову

А>что-то такое:
А>
А>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, что неудобно.
А>Есть ли решение лучше ?

если Ваша "религия" позволяет активно использовать препроцессор, то например так:
// file commands.inc
COMMAND( APP_INIT )
COMMAND( APP_CLOSE )
/*...*/

enum CommandKind
{
#define COMMAND( NAME ) NAME ,
#include "commands.inc"
#undef COMMAND
};
const char* CommandNames[] =
{
#define COMMAND( NAME ) #NAME ,
#include "commands.inc"
#undef COMMAND
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.