Я объявил перечисление следующим образом:
enum fileType {typeA, typeB};
Это вызывает ошибку, когда я пытаюсь добавить тип directoryType к строке.
Я считаю, что мне нужно включить базовый тип идентификаторов перечисления в объявление enum. Или что-то вроде
enum fileType : string {typeA, typeB};
как описано в http://msdn.microsoft.com/en-us/library/2dzy4k6e(v=vs.80).aspx
однако это не компилируется для меня. Каков правильный синтаксис для объявления базового типа идентификаторов перечислений?
У вас могут быть только целочисленные типы в качестве базового типа для enum. Это означает подписанные и неподписанные типы, такие как char
short
int
а также long
,
Имена перечислений нигде не доступны во время выполнения. Если вы хотите отобразить их (или добавить в строку), вам нужно написать специальный код.
enum fileType {typeA, typeB};
const char *fileType_str[]={ "typeA","typeB"};
fileType x = typeA;
// display x
std::cout << "x is " << fileType_str[x] << std::endl;
// append x to string
std::string y = "directoryType type to a ";
y += fileType_str[x];
Других решений пока нет …