”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 C++0x 中使用初始化列表初始化成员数组?

如何在 C++0x 中使用初始化列表初始化成员数组?

发布于2024-11-08
浏览:184

How to Initialize Member Arrays with Initializer Lists in C  0x?

使用初始值设定项列表初始化成员数组

在 C 0x 中,尝试使用初始值设定项列表初始化成员数组时,可能会遇到错误“赋值中的类型不兼容” .

要解决此问题,请考虑使用可变参数模板构造函数:

struct foo {
    int x[2];
    template 
    foo(T... ts) : x{ts...} {}
};

int main() {
    // Usage
    foo f1(1, 2);   // OK
    foo f2{1, 2};   // Also OK
    foo f3(42);    // OK; x[1] zero-initialized
    foo f4(1, 2, 3); // Error: too many initializers
    foo f5(3.14);  // Error: narrowing conversion not allowed
    foo f6("foo"); // Error: no conversion from const char* to int
}

如果保留“const”状态不是必需的,您也可以使用函数来加载数组值:

struct foo {
    int x[2];
    foo(std::initializer_list il) {
        std::copy(il.begin(), il.end(), x);
    }
};

但是,这种方法放弃了编译时边界检查。

最新教程 更多>
  • JavaScript 困境:嵌入脚本与内联执行?
    JavaScript 困境:嵌入脚本与内联执行?
    外部脚本标签中的 JavaScript:源困境当使用带有 的外部脚本标签时语法,了解它们的局限性很重要。尝试将 JavaScript 直接嵌入到这些标记中(如下例所示)会导致意外行为:<script src="myFile.js"> alert("...
    编程 发布于2024-11-08
  • 属性 Hooks 无 PHP
    属性 Hooks 无 PHP
    11 月,我们将推出我们心爱的 PHP 8.4 版本,随之而来的是社区期待已久的新功能:属性挂钩!受到 C#、Swift 和 Kotlin 等其他语言的启发,这个新功能消除了魔法方法 __set() 和 __get() 的麻烦。 我将展示一个示例,说明当前如何拥有 getter 和 setter,而...
    编程 发布于2024-11-08
  • 如何在不阻塞服务器和客户端的情况下实时读取和回显服务器当前正在写入的上传文件大小?
    如何在不阻塞服务器和客户端的情况下实时读取和回显服务器当前正在写入的上传文件大小?
    如何在不阻塞服务器和客户端的情况下,实时读取和打印正在服务器端写入的上传文件的大小?让我们展开来讨论这个问题:为了实时获取文件上传的进度,我们在 POST 请求中通过 fetch() 从 Blob、File、TypedArray 或 ArrayBuffer 对象设置了 body 对象。目前的实现将 ...
    编程 发布于2024-11-08
  • 如何在 Python 中确定闰年:综合指南
    如何在 Python 中确定闰年:综合指南
    使用 Python 计算闰年确定某一年是否为闰年涉及可以通过编程方式评估的特定标准。闰年可以被四整除,但能被一百但不能被四百整除的年份除外。解决此问题的一个潜在方法是实现一个自定义函数来检查闰年。但是,当尝试使用此类函数时,您可能会遇到模块返回 None 而不是所需输出的问题。更强大、更全面的解决方...
    编程 发布于2024-11-08
  • 如何在 PHP 中使用正则表达式提取以字符为界的子字符串?
    如何在 PHP 中使用正则表达式提取以字符为界的子字符串?
    在 PHP 中提取由字符限制的子字符串从字符串中提取由特定字符限制的短语是一项常见的编程任务。 PHP 通过正则表达式为此提供了方便的解决方案。考虑以下字符串:$String = "[modid=256]";提取之间的部分等号(=)和右方括号(]),可以使用以下代码:$input...
    编程 发布于2024-11-08
  • YAML 到 JSON 转换:综合指南
    YAML 到 JSON 转换:综合指南
    YAML 和 JSON 是两种流行的数据序列化格式,每种格式都有独特的优势。了解如何在它们之间进行转换对于跨不同平台和系统工作的开发人员很有用。在本指南中,我们将探讨 YAML 和 JSON 之间的主要区别、为什么您可能需要在它们之间进行转换,并提供执行转换的实用步骤和工具。 YAML 和 JSO...
    编程 发布于2024-11-08
  • 如何查找 PHP 数组中最高值的索引?
    如何查找 PHP 数组中最高值的索引?
    确定数组中最大值的索引使用数组时,确定具有最大值的元素的索引为一项共同的任务。让我们探讨一下这个问题的解决方案。问题描述:给定一个数组,检索数组中存在的最高值的索引。例如,如果数组为:[11 =&gt; 14, 10 =&gt; 9, 12 =&gt; 7, 13 =&...
    编程 发布于2024-11-08
  • 引入灵活且与框架无关的 Laravel Livewire Modal 包
    引入灵活且与框架无关的 Laravel Livewire Modal 包
    引入灵活的 Laravel Livewire 模态包 Laravel 和 Livewire 彻底改变了我们用最少的 JavaScript 构建动态应用程序的方式。但在处理模态时,大多数解决方案往往将我们锁定在特定的设计框架中,例如 Bootstrap 或 Tailwind CSS。...
    编程 发布于2024-11-08
  • Laravel 可邮寄教程
    Laravel 可邮寄教程
    在 Laravel 中发送电子邮件需要三个组件之间的协作:Laravel 邮件程序、Laravel 可邮件类和 Mail 外观。这三者中的每一个都涉及发送电子邮件生命周期的不同方面。 Mailers 是连接电子邮件发送服务(如 AWS SES、Sendgrid、Mailgun 等)的驱动程序,应用...
    编程 发布于2024-11-08
  • 如何在 Python 多处理应用程序中实现稳健的日志记录?
    如何在 Python 多处理应用程序中实现稳健的日志记录?
    Python 中的多处理日志记录:一个强大的解决方案当使用 Python 的多处理模块时,由于缺乏进程,日志记录变得更加复杂 -多处理感知记录器的共享锁,可能会导致 sys.stderr 输出混乱。为了解决这一挑战,另一种方法是创建一个自定义日志处理程序,通过管道将输出定向到父进程。此方法依赖队列来...
    编程 发布于2024-11-08
  • Go 的构建系统可以处理“go build”之外的自定义步骤吗?
    Go 的构建系统可以处理“go build”之外的自定义步骤吗?
    通过自定义步骤利用 Go 的构建系统在软件开发中,当基本命令出现时,可能会出现扩展构建系统功能的需求证明不足。这个问题探讨了Go的构建工具是否允许与go build一起执行额外的步骤。pkg-config和自定义标志虽然可以传递额外的标志要使用 pkg-config 构建工具,此方法仅限于与特定库关...
    编程 发布于2024-11-08
  • 如何验证MySQL DELETE操作是否成功?
    如何验证MySQL DELETE操作是否成功?
    如何验证 MySQL DELETE 操作是否成功使用 MySQL 执行 DELETE 查询时,确定操作是否成功至关重要成功的。这在根据条件删除特定记录时尤其重要。mysql_query() 方法:对于使用 mysql_query() 的传统 MySQL 交互,成功的 DELETE 操作将返回布尔值:...
    编程 发布于2024-11-08
  • 您可以分配给类类型的右值引用吗?  一个悖论的解释。
    您可以分配给类类型的右值引用吗? 一个悖论的解释。
    分配给类类型的右值引用:已解决的悖论在 C 领域,左值和右值之间的区别至关重要。左值表示具有可以修改的内存位置的对象,而右值则表示不能修改的临时对象或常量。然而,一个有趣的代码片段提出了关于这个基本分歧的问题:class Y { public: explicit Y(size_t num =...
    编程 发布于2024-11-08
  • Laravel 的 TrimStrings 中间件如何导致问题
    Laravel 的 TrimStrings 中间件如何导致问题
    Laravel 是 PHP 世界中的一个流行框架,为开发人员提供了简化工作的强大工具。然而,有时这些便利可能会导致意想不到的问题。在这篇文章中,我将讨论 Laravel 中的 TrimStrings 中间件如何导致问题以及如何解决这些问题。 什么是 TrimStrings 中间件及其...
    编程 发布于2024-11-08
  • 使用 JavaScript 实现推送通知:生产级方法
    使用 JavaScript 实现推送通知:生产级方法
    在这篇文章中,您将学习如何通过遵循生产级最佳实践使用 JavaScript 实现推送通知。最好的事情之一是我也会提供一个文件夹结构,以便您可以轻松地设置您的项目。 在现实应用程序中设置推送通知需要仔细规划。我将向您展示如何在专业的 Node.js 应用程序中构建此功能。我们将介绍重要的部分,例如如何...
    编程 发布于2024-11-08

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

Copyright© 2022 湘ICP备2022001581号-3