Что делает этот двоеточие в объявлении enum? - PullRequest
14 голосов
/ 27 июня 2011

Я искал этот вопрос, думая, что кто-то должен был задавать его раньше.Я не получил никаких результатов, поэтому, если это так, пожалуйста, опубликуйте ссылку и не стесняйтесь закрыть вопрос.

Я столкнулся с этим кодом в EASTL :

enum : size_type {   // size_type = size_t                   
                npos     = (size_type)-1,
                kMaxSize = (size_type)-2
            };

Я никогда не сталкивался с такой декларацией enum.Что делает : в этом случае?

Ответы [ 2 ]

13 голосов
/ 27 июня 2011

В C ++ 0x вы можете указать базовый тип для перечисления.В этом случае это будет size_type.

(и, возможно, он будет поддерживаться как расширение в других местах до C ++ 0x, очевидно.)

10 голосов
/ 27 июня 2011

Это расширение Microsoft, которое позволяет вам выбрать базовый тип значений перечисления. Например, это позволяет указать, что значения являются беззнаковыми (по умолчанию компиляторы Microsoft выбирают подпись) или что они занимают только 8 или 16 бит (по умолчанию Microsoft обычно использует 32 бита).

Синтаксис задокументирован здесь: http://msdn.microsoft.com/en-us/library/2dzy4k6e(v=VS.100).aspx, но я не могу найти официальную документацию о том, что он на самом деле делает.

C ++ 11 добавляет аналогичную функцию, но с немного другим синтаксисом. В C ++ 11 вы бы написали это так:

enum class MyEnum : size_type { .. values .. };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...