Re: Преобразование enum в enum
От: Tonal- Россия www.promsoft.ru
Дата: 02.01.08 21:02
Оценка: 1 (1)
Если имеется в виду, что тебе нужно, чтобы одноимённые члены перечислений преобразовывались друг в друга, то можно немного подправить код из Копирование по маске
Автор: Tonal-
Дата: 22.12.07
.

Т.е. для одного из перечислений переопределяешь свойства
struct enum_trait<NS1::Color> {
  #define enum_val_type(enum_val_name) \
    typedef enum_val_traits(NS1::Color, fld_name) \
    enum_val_name##_type;
  enum_val_type(red);
  enum_val_type(green);
  enum_val_type(blue);

  typedef mpl::list<
    red_type, green_type, blue_type
  > fields_map;
};

Ну а в коде используешь каст:
NS2::Color val = enum_cast<NS2::Color>(NS1::red);


Тут надо ещё подумать как обрабатывать случаи, когда в приёмнике нет соответствующих имён.
Можно выбрасывать исключение, устанавливать в указанное значение, или в значение источника. Это можно определять стратегиями, или написать разные функции.
... << RSDN@Home 1.2.0 alpha rev. 786>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.