如何告诉Borland C ++枚举是否在类中?

时间:2014-01-21 07:20:29

标签: c++ enums namespaces turbo-c++ borland-c++

我的一项任务要求我的代码在Borland Turbo C ++上编译时没有错误。问题是,我有一个名为 OAConfiguration 的类,其中包含一个枚举:

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

在我的代码中,我为 ObjectAllocator 类实现了 AllocateBlock 函数,其中我有这样的语句:

if (OAConfig::HBLOCK_TYPE::hbExternal)

虽然这在VS中运行良好,但Borland说“不是ObjectAllocator中的类或命名空间名称:: AllocateBlock(void *)”

有人可以指出正确的语法,我无法在其他地方找到类似的问题。

1 个答案:

答案 0 :(得分:4)

Borland在这方面是对的:你不能用枚举名来限定枚举数。 Visual Studio仅支持它作为扩展。正确的代码是这样的:

if (OAConfig::hbExternal)

在C ++ 11中,语言中添加了一个新类型enum class。这提供了范围访问(仅限范围访问),同时也不支持使用int进行隐式转换。