Как сказать Borland C ++, что enum находится внутри класса?

Одно из моих заданий требует, чтобы мой код компилировался без ошибок на Borland Turbo C ++. Проблема в том, что у меня есть класс OAConfiguration который содержит перечисление:

enum HBLOCK_TYPE{hbNone, hbBasic, hbExtended, hbExternal};

В моем коде я реализую функцию AllocateBlock функция для ObjectAllocator класс, где у меня есть такое утверждение:

if (OAConfig::HBLOCK_TYPE::hbExternal)

Хотя в VS это работает нормально, Борланд говорит, что «это не имя класса или пространства имен в ObjectAllocator :: AllocateBlock (void *)»

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

1

Решение

Borland прав в этом отношении: нельзя перечислить счетчиков по имени перечисления. Visual Studio поддерживает это только как расширение. Правильный код будет выглядеть так:

if (OAConfig::hbExternal)

В C ++ 11 новый тип enum class был добавлен в язык. Это обеспечивает доступ к области (и только доступ к области), но также не поддерживает неявное преобразование с int,

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector