c++ - 如何告诉 Borland C++ 枚举在类中?

标签 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 *) 中的类或命名空间名称”

谁能指出正确的语法,我在其他地方找不到类似的问题。

最佳答案

Borland 在这方面是正确的:您不能通过枚举名称来限定枚举数。 Visual Studio 仅支持将其作为扩展。正确的代码应该是这样的:

if (OAConfig::hbExternal)

在 C++11 中,一种新的类型 enum class 被添加到语言中。这提供了作用域访问(并且仅作用域访问),同时也不支持使用 int 的隐式转换。

关于c++ - 如何告诉 Borland C++ 枚举在类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251663/

相关文章:

C++/面向对象 : Class with implicit dependency on other class

c++ - GRPC 错误代码 12 客户端服务器应用程序 C++ [调试]

Swift - 获取键为枚举的字典值

C++:设计:我应该在这里使用枚举吗?

php 命名空间和自动加载

c++ - 显示带有多个参数的 QMessageBox

c++ - 为什么这些方法会使我的程序变得如此大?

matlab - 如何在 MATLAB 中创建枚举类型?

nginx - Kubernetes Nginx Ingress Controller 应该在什么命名空间?

java - 如何防止 JAXB 在编码期间写入未使用的 namespace