Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
h3mbr0
236 / 79 / 18
Регистрация: 12.03.2012
Сообщений: 342
#1

Enum - C++

20.12.2012, 15:27. Просмотров 785. Ответов 7
Метки нет (Все метки)

Доброго времени суток
Интересует что значит следующий код:
C++
1
2
3
4
5
6
7
8
enum Colors
{
    RED, 
    GREEN,
    BLUE
};
 
enum Foo(Colors);
Вернее значение последней его строки

И влияет ли запись вида "enum class" на что-то кроме области видимости констант перечисления?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 15:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Enum (C++):

Enum == int !=enum? - C++
enum Flags{ Flag1 = 1, Flag2 = 2}; int main() { Flags a = Flag1, b = Flag2; a = a | b; } error C2440: =: невозможно...

enum - C++
Ку! Имеется некое множество enum SomeSet { elem_1, elem_2, elem_3, // ... }; Это множество активно...

enum - C++
enum alfa{a,b,c,d,e,f,g,h,i,k,l,m,n,o,p,q,r,s,t,v,x,y,z}; for(int i=strlen(text);i>=0;i--) { if(isalnum((unsigned char)text)) ...

enum - C++
enum __Enumm { A a; B b; C c; }; Пишет ошибку. Объясните, пожалуйста, как правильно и как работать с enum'ами?

enum - C++
#include <iostream> using std::cout; using std::endl; enum {red, green, blue}; int main() { cout<<sizeof(red)<<endl; ...

enum - C++
есть (в header.h) enum valut{dol, grn ,rub}; в другом cpp функция convert(valut v) . В еще другом файле функция main , оглашение int v , ...

7
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
20.12.2012, 15:34 #2
энум - оператор перечисления. Данный код взаимозаменяет такой:
C++
1
2
3
#define RED 0
#define GREEN 1
#define BLUE 2
Энум может быть как безымянный, так и с именем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
enum
{
    _0,
    _1,
    _2
};
 
enum name
{
    _234 = 243,
    _244, // = 244,
    _245 // = 245
};
0
h3mbr0
236 / 79 / 18
Регистрация: 12.03.2012
Сообщений: 342
20.12.2012, 15:35  [ТС] #3
Цитата Сообщение от Afflicted Посмотреть сообщение
энум - оператор перечисления. Данный код взаимозаменяет такой:
C++
1
2
3
#define RED 0
#define GREEN 1
#define BLUE 2
Энум может быть как безымянный, так и с именем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
enum
{
    _0,
    _1,
    _2
};
 
enum name
{
    _234 = 243,
    _244, // = 244,
    _245 // = 245
};
Это мне все известно, меня интересует значение конкретного кода, так как понять схему его работы я не могу
0
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
20.12.2012, 15:36 #4
В коде можно использовать любую из этих переменных, например так: int red_color = RED
0
h3mbr0
236 / 79 / 18
Регистрация: 12.03.2012
Сообщений: 342
20.12.2012, 15:39  [ТС] #5
Цитата Сообщение от Afflicted Посмотреть сообщение
В коде можно использовать любую из этих переменных, например так: int red_color = RED
Меня интересует последняя строчка:
C++
1
enum Foo(Colors);
Что она означает? прототип с созданием его экземпляра? как это понять?

Первый enum я оставил только потому что не понимаю почему не происходит конфликта имен, вообще ничего не понимаю
0
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
20.12.2012, 15:48 #6
полагаю, что для удобства использования.
Например, возможно провернуть такое действие:

C++
1
std::cout << Foo(GREEN);
что выведет значение элемента
0
h3mbr0
236 / 79 / 18
Регистрация: 12.03.2012
Сообщений: 342
20.12.2012, 16:00  [ТС] #7
Цитата Сообщение от Afflicted Посмотреть сообщение
полагаю, что для удобства использования.
Например, возможно провернуть такое действие:

C++
1
std::cout << Foo(GREEN);
что выведет значение элемента
Тут это скорее функциональное приведение, а в моем коде создается экземпляр Foo с именем Colors, хотя Foo как таковой не определен:

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using std::cout;
 
enum Foo(Bar);
 
int main()
{
    Bar = (Foo)1;
    cout << Bar;
    return 0;
}
Добавлено через 7 минут
Похоже что так и есть - создается экземпляр Foo в виде Bar, не знал что так можно
А что на счет второго моего вопроса?
влияет ли запись вида "enum class" на что-то кроме области видимости констант перечисления?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
20.12.2012, 16:05 #8
h3mbr0, да.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
enum A { first };
enum class B { first };
 
int main()
{
   int a = first;
   int b = B::first;
}
http://liveworkspace.org/code/36mZUc$1
1
20.12.2012, 16:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 16:05
Привет! Вот еще темы с ответами:

enum - C++
всем здрасти, помогите разобраться с функцией enum к примеру есть код enum direction { RIGHT = 0x1, LEFT = 0x2, UP ...

обратный enum - C++
привет есть enum color {q,w,r,t,w,e,y,q}; как вернуть название (q,w,..) по номеру типа color c; cout&lt;&lt;c(3) //вывод &quot;r&quot;...

enum: цифры - C++
А можно в перечислениях использовать цифры? Например: enum chislo {1, 2, 3, 4}(только так не работает:gmad:) Просто есть файл, там...

Уникальный ID enum - C++
Нужно создать класс &quot;Игрок&quot; в котором есть поле ID, где задется уникальный пятизначный номер. Подскажите, как это сделать используя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru