我的一项作业要求我的代码在 Borland Turbo C++ 上编译时没有错误。问题是,我有一个名为 OAConfiguration 的类,其中包含一个枚举:
enum HBLOCK_TYPE{hbNone, hbBasic, hbExtended, hbExternal};
在我的代码中,我为 ObjectAllocator 类实现了 AllocateBlock 函数,其中我有如下语句:
if (OAConfig::HBLOCK_TYPE::hbExternal)
虽然这在 VS 中工作正常,但 Borland 表示“这不是 ObjectAllocator::AllocateBlock(void *) 中的类或命名空间名称”
谁能指出正确的语法,我在其他地方找不到类似的问题。
最佳答案
Borland 在这方面是正确的:您不能通过枚举名称来限定枚举数。 Visual Studio 仅支持将其作为扩展。正确的代码应该是这样的:
if (OAConfig::hbExternal)
在 C++11 中,一种新的类型 enum class
被添加到语言中。这提供了作用域访问(并且仅作用域访问),同时也不支持使用 int
的隐式转换。
关于c++ - 如何告诉 Borland C++ 枚举在类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251663/