|
|
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
У меня вопрос по поводу enum в C++. В Delphi я могу написать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. T.e. имея перечислимый тип, я могу перебрать все его элементы, не задавая напрямую их число - если будут добавлены новые элементы, например, meFour, код будет работать правильно, новый элемент будет обрабатываться автоматически. Кроме того я имею возможность получить строковое представление имени элемента перечислимого типа с помощью GetEnumName. Как такое же реализовать на C++? Если я пишу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 1. как мне в цикле перебрать все элементы MyEnum, не задавая вручную их число, т.е. автоматически определять значение для ENUM_SIZE? 2. можно ли получить строковое представление названия элемента? Меня интересует использование только стандартных библиотек C++, входящих в любой современный компилятор на основных OS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 09:03:21 |
|
||
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. Но enum для этого не предназначен. Может лучше использовать, например, костантный std::vector? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 09:43:33 |
|
||
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
Serge N2. можно ли получить строковое представление названия элемента? а для этого можешь использовать std::map ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 09:48:19 |
|
||
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
спасибо, разобрался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 10:09:04 |
|
||
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
Serge N пишет: > T.e. имея перечислимый тип, я могу перебрать все его элементы, не > задавая напрямую их число - если будут добавлены новые элементы, > например, meFour, код будет работать правильно, новый элемент будет > обрабатываться автоматически. Кроме того я имею возможность получить > строковое представление имени элемента перечислимого типа с помощью > Как такое же реализовать на C++? Никак. Ни то, ни другое языком напрямую не поддерживается. Поэтому надо писать свои средства. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 10:58:39 |
|
||
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
MasterZivНикак. Ни то, ни другое языком напрямую не поддерживается. Поэтому надо писать свои средства. Posted via ActualForum NNTP Server 1.4 Пи сать не надо - надо выбрать из уже готового. CodeProject тебе в помощь. http://www.codeproject.com/cpp/ObjectOrientedEnums.asp?target=BEGIN%5FENUM%5FDEFINITION Среди имеющегося там многообразия работы с енумами - этот самый прямой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2007, 00:49:27 |
|
||
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
Akh Код: plaintext 1. 2. 3. 4. 5. 6. 7. Но enum для этого не предназначен. Может лучше использовать, например, костантный std::vector? А что делать будем, если вот такое будет? Код: plaintext 1. 2. 3. 4. 5. Вектор действительно получше будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 11:29:04 |
|
||
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
man_555 Akh Код: plaintext 1. 2. 3. 4. 5. 6. 7. Но enum для этого не предназначен. Может лучше использовать, например, костантный std::vector? А что делать будем, если вот такое будет? Код: plaintext 1. 2. 3. 4. 5. Вектор действительно получше будет. А не надо такое делать! Я уже написал: std::vector<int>. Хочешь странного - и ответ странный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 11:33:44 |
|
||
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
Akh А не надо такое делать! Я уже написал: std::vector<int>. Хочешь странного - и ответ странный Если ты заметил, то вовсе не я спрашивал ;-) Просто незачем давать тогда "странные" ответы, у человека может быть вполне конкретная цель, мне, правда, непонятная... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 11:58:54 |
|
||
|
Перебор элементов в enum
|
|||
|---|---|---|---|
|
#18+
man_555 Akh А не надо такое делать! Я уже написал: std::vector<int>. Хочешь странного - и ответ странный Если ты заметил, то вовсе не я спрашивал ;-) Просто незачем давать тогда "странные" ответы, у человека может быть вполне конкретная цель, мне, правда, непонятная... Заметил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 12:27:56 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34981543&tid=2027717]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
251ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 532ms |

| 0 / 0 |
