Используйте enum
, если вы хотите создать новый отдельный тип, который не является действительно скалярным значением.Например, colors может быть перечислено и, следовательно, пронумеровано, но эти числа на самом деле ничего не значат.
Если вы присваиваете значащие числа перечислителям, это признак того, что выможет действительно понадобиться что-то вроде этого:
namespace GameProperty { // completely different concepts with unifying theme
int const num_tetrominoes = 7,
num_tiles = 4,
num_rotations = 4;
};
Теперь вы можете использовать тот же синтаксис, что и объявления using
, и эти константы работают в for
циклах и выражениях без преобразования.
Для другого примера, следующие оба являются правильными, но не должны меняться местами между enum
и int
:
namespace wavelengths { // closely related quantities
typedef int wavelength_t; // maybe we will express in-between values
wavelength_t const red = 750,
green = 550,
blue = 400;
};
enum colors { // qualitatively different but related as one-of-many
red,
green,
blue;
};