”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 C++ 中定义静态 const std::string 成员?

如何在 C++ 中定义静态 const std::string 成员?

发布于2024-12-21
浏览:481

How to Define Static const std::string Members in C  ?

定义 const std::string 类型的静态数据成员

在 C 中,定义 std::string 类型的私有静态 const 成员在类内使用类内初始化,如下所示,不符合C标准:

class A {
   private:
      static const string RECTANGLE = "rectangle";
}

但是,C 提供了替代方法来实现此功能。

C 17 内联变量

自 C 17 起,您可以使用内联变量这个目的。内联变量是 C 17 的一项功能,允许使用 inline 关键字直接在类定义中声明静态变量。例如:

// In a header file (if necessary)
class A {
private:
  inline static const string RECTANGLE = "rectangle";
};

Pre-C 17 Approach

在 C 17 之前,您必须在类定义之外定义静态成员并在其中提供初始值设定项。这是一个例子:

// In a header file (if necessary)
class A {
private:
  static const string RECTANGLE;
};
// In one of the implementation files
const string A::RECTANGLE = "rectangle";

注意: 您尝试的初始化语法(在类定义内)仅支持整型和枚举类型。

最新教程 更多>
  • 如何通过一次查询高效删除多个MySQL表中的数据?
    如何通过一次查询高效删除多个MySQL表中的数据?
    在 MySQL 中使用单个查询从多个表中删除数据当处理由公共字段关联的多个表时,可能需要删除有关用户的信息同时从所有表中。此查询不是执行多个 DELETE 语句,而是探索在单个查询中执行删除的可能性。建议的查询涉及使用以分号分隔的多个 DELETE 语句:DELETE FROM table1 WHE...
    编程 发布于2024-12-21
  • 如何使用 Intent.putExtra() 在 Activity 之间发送整数数组?
    如何使用 Intent.putExtra() 在 Activity 之间发送整数数组?
    使用 Intent.putExtra() 发送数组在 Activity 之间传输数据时,可能需要传递数组等复杂的数据结构。本文探讨如何使用 Intent.putExtra() 有效地将整数数组从一个活动 (A) 发送到另一个活动 (B)。问题:In活动 A 中,初始化了一个整数数组,并打算将其发送到...
    编程 发布于2024-12-21
  • 如何强制浏览器刷新动态图像以显示更新?
    如何强制浏览器刷新动态图像以显示更新?
    使用 Cachebreaker 进行动态图像刷新访问每次加载时提供新图像的动态图像源时,强制刷新至关重要在网页上显示更新后的图像。在后台加载新图像并尝试替换页面上的现有图像时会出现此问题。尽管加载了新图像,但在刷新页面之前它可能不会显示。要解决此问题,可以将缓存破坏器附加到图像 URL 的末尾:ne...
    编程 发布于2024-12-21
  • 如何可靠地检查 JavaScript 中特定类是否存在?
    如何可靠地检查 JavaScript 中特定类是否存在?
    确定 JavaScript 中元素类的存在检查元素的类属性时,通常需要验证它是否包含特定类。提供的代码利用 switch 语句来检查元素的确切类值,但此方法无法检测部分匹配。要解决此限制,请考虑使用 element.classList .contains 方法。此方法接受类名作为参数,并返回一个布尔...
    编程 发布于2024-12-21
  • 如何在 React 渲染函数中有效使用异步调用?
    如何在 React 渲染函数中有效使用异步调用?
    在 React 渲染函数中使用 Async/Await:另一种方法React 应用程序中经常会遇到异步编程,特别是在处理外部事务时数据来源。然而,直接在 React 的 render 函数中使用 async 和 wait 可能会导致意外的结果。为了在 React 中有效地合并异步调用,常见的方法是利...
    编程 发布于2024-12-21
  • 插入数据时如何修复“常规错误:2006 MySQL 服务器已消失”?
    插入数据时如何修复“常规错误:2006 MySQL 服务器已消失”?
    插入记录时如何解决“一般错误:2006 MySQL 服务器已消失”介绍:将数据插入 MySQL 数据库有时会导致错误“一般错误:2006 MySQL 服务器已消失”。当与服务器的连接丢失时会出现此错误,通常是由于 MySQL 配置中的两个变量之一所致。解决方案:解决此错误的关键是调整wait_tim...
    编程 发布于2024-12-21
  • 如何使用 JavaScript 按日期键对对象数组进行排序?
    如何使用 JavaScript 按日期键对对象数组进行排序?
    使用 JavaScript 按日期键对对象数组进行排序根据特定日期值键对对象数组进行排序是一项常见任务在 JavaScript 编程中。在这种情况下,我们需要通过“updated_at”键对对象数组进行排序,该键表示日期和时间。实现此目的的最有效方法是使用 Array.sort() 方法与比较函数的...
    编程 发布于2024-12-21
  • 如何实现锚链接平滑滚动?
    如何实现锚链接平滑滚动?
    单击锚链接时平滑滚动使用锚链接导航网页时,用户期望无缝过渡到目标部分。然而,默认的滚动行为可能会很突然。本文探讨了单击锚链接时实现平滑滚动的技术。本机支持Chrome 和 Firefox 等浏览器引入了对平滑滚动的本机支持。这是通过滚动到视图时使用值为“smooth”的“behavior”属性来实现...
    编程 发布于2024-12-21
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-12-21
  • 如何在 C++ 中生成随机字母数字字符串?
    如何在 C++ 中生成随机字母数字字符串?
    在 C 中生成随机字母数字字符串 创建由字母数字字符组成的随机字符串是编程中的一项常见任务。在 C 中,有多种方法可以实现此目的,每种方法都有其优点和局限性。一种简单的方法是利用查找表和 rand() 函数在表中生成随机索引。这是一个示例:#include <ctime> #includ...
    编程 发布于2024-12-21
  • Go 结构中的匿名接口如何增强代码灵活性?
    Go 结构中的匿名接口如何增强代码灵活性?
    理解结构体中的匿名接口结构体中的匿名接口的概念可能会令人困惑,尤其是在 Go 编程的上下文中。以下是它的含义及其工作原理:在提供的示例中,反向结构嵌入了一个名为 Interface 的匿名接口,该接口在 sort 包中定义。这意味着反向结构有效地“采用”了接口的方法。匿名接口的好处通过嵌入匿名接口,...
    编程 发布于2024-12-21
  • 如何在 Anaconda 环境中使用 Pip 正确安装软件包?
    如何在 Anaconda 环境中使用 Pip 正确安装软件包?
    在 Anaconda 环境中使用 Pip 安装软件包创建和激活 conda 环境允许为特定项目进行独立的 Python 安装。但是,用户在 Anaconda 环境中尝试使用 pip 安装软件包时可能会遇到问题。一个常见问题是 pip 尝试将软件包安装到系统范围的 Python 安装而不是活动环境中。...
    编程 发布于2024-12-21
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-12-21
  • 如何确保我的 Java JFileChooser 始终出现在前面?
    如何确保我的 Java JFileChooser 始终出现在前面?
    将JFileChooser带到所有Windows的最前面在使用Java的JFileChooser选择文件时,您可能会遇到文件选择器出现在其他窗口后面的情况,需要您最小化他们访问它。这可能是一个令人沮丧的障碍,尤其是在测试期间。此行为的原因在于 showOpenDialog() 的 API,它引用了“...
    编程 发布于2024-12-21
  • 如何在PHP中强制执行文件下载并确保用户文件安全?
    如何在PHP中强制执行文件下载并确保用户文件安全?
    在 PHP 中强制文件下载如果您需要为用户提供一种从 PHP 下载图像或任何其他类型文件的方法脚本,您可以遵循一个简单的方法。提供下载链接For您想要提供下载的每个图像或文件,包括一个指向 PHP 脚本的超链接,其代码如下:<?php // File details $file...
    编程 发布于2024-12-21

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3