Использование перечислений в C? - PullRequest
2 голосов
/ 21 апреля 2010

Есть ли способ скопировать одно перечисление в другое? Например:

     enum Element4_Range{a4=1,b4,c4,d4};
     enum Element3_Range{a3=1,b3,c3};
     enum Element3_Range Myarr3[10];
     enum Element4_Range Myarr4[10];

     enum Element3_Range MyFunc(Element4_Range);

     main()
     {
          MyFunc(Myarr4);
     }
     enum Element3_Range MyFunc(Element4_Range Target)
     {
           enum Element3_Range Source;
           Source = Target;-----------Is this possible?
      }

Если не может кто-нибудь, пожалуйста, покажите мне способ скопировать значения enum из одного в другое?

Я получаю ошибку при выполнении этого как

  1. несовместимые типы в присваивании Element3_Range*' to Element3_Range [10] '
  2. не может преобразовать Element4_Range' to Element3_Range 'в назначении

Спасибо и всего наилучшего
Мэдди

Ответы [ 3 ]

2 голосов
/ 21 апреля 2010

В ролях:

Source = (Element3_Range)Target;
1 голос
/ 21 апреля 2010

Перечисление - это int с проверкой типа. Если вы не хотите проверять тип, используйте int.

0 голосов
/ 22 апреля 2010

Вы также можете рассмотреть возможность использования блока переключателей:

switch(Target) {
case a4:
  return a3;
case b4:
  return b3;
case c4:
  return c3;
}

Не всегда желательно использовать «фактическое значение» перечисления, в отличие от его «логического значения». Конечно, это не быстро, но это не главное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...