无法为数组指定显式初始化程序

2023-12-02

为什么这个在 VS 2013 中编译

int main()
{

    int a[3] = { 1, 2, 3 };

    return 0;

}

但这给出了错误

class TestClass
{

    int a[3] = { 1, 2, 3 };

};

我如何解决它?


来自 Bjarne 的 C++11 FAQ 页面:

在 C++98 中,只有整型的静态 const 成员可以在类中初始化,并且初始化器必须是常量表达式。 [...] C++11 的基本思想是允许非静态数据成员在声明的地方(在其类中)进行初始化。

问题是,VS2013并没有实现C++11的所有功能,而这只是其中之一。所以我建议你使用 std::array (注意额外的大括号组):

#include <array>

class A
{
public:
    A() : a({ { 1, 2, 3 } }) {} // This is aggregate initialization, see main() for another example

private:
    std::array<int, 3> a; // This could also be std::vector<int> depending on what you need.
};

int main()
{
    std::array<int, 3> std_ar2 { {1,2,3} };
    A a;

    return 0;
}

关于聚合初始化的 cppreference 链接

如果您有兴趣可以点击在这个链接上看看您所做的事情在使用实现此功能的编译器时是否可以编译(在本例中为 g++,我已经在 clang++ 上尝试过,它也有效)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法为数组指定显式初始化程序 的相关文章

随机推荐

  • 过渡到 vim。存在缩进问题

    我正在从手术中恢复 因此 我正在过渡到 VIM 作为起点 我选择使用 vim sensible 插件作为我的配置的基础 此外 我还安装了 vim rails 和 vim ruby 插件 这些都是通过 Pathogen 加载的 无论出于何种原
  • 序列化 JFrame 并通过网络发送

    我想做的是通过套接字发送 JFrame 问题是在我发送表格并按下按钮查看它之后 我得到以下异常 package ds3 import java io IOException import java io ObjectInputStream
  • Android - 在 UI Fragment 中保留对象

    在我的项目中 我最初使用的是这个方案 活动A UI gt 片段B 非 UI gt 适配器 AsyncTask B保留与setRetainInstance true 并更新A UI A实例化B with getFragmentManager
  • 在 .NET 中按换行符拆分字符串

    我需要在 NET 中将字符串拆分为换行符 我知道拆分字符串的唯一方法是使用Split方法 然而 这不允许我 轻松地 在换行符上拆分 那么最好的方法是什么 要分割字符串 您需要使用采用字符串数组的重载 string lines theText
  • jQuery Mobile 站点中所有页面通用的弹出窗口

    我正在尝试使用 jQuery Mobile 制作一个网站 它由 HTML 文件中的许多页面组成 有些只有一页 有些有多个页面 使用它们的多页功能 该网站将有一些通知弹出窗口 它们在所有页面上看起来都一样 我正在使用他们的弹出窗口新的弹出功能
  • Python-按前两个单词对行进行分组

    我想按文件中的前两个单词对文件进行分组 然后重新排列和打印 我想做 lines file readlines i 0 for line in lines word1 line split 0 word2 line split 1 if wo
  • c - 嵌入式系统中Long Long到char的转换函数

    我正在使用嵌入式系统 我需要实现一种将 long long 转换为 char 的方法 问题是我不能在这个系统中使用 sprintf 来做到这一点 所以我正在寻找替代方法 函数来实现这一点 欢迎提出 LongLongToChar 函数的实现建
  • FindBugs 希望 readObject(...) 为私有序列化,为什么?

    我正在某些代码上运行 findbugs 它说 readObject 方法必须是私有的才能调用序列化 反序列化 为什么 如果公开的话会有什么问题呢 About readObject writeObject 作为私有的 情况如下 如果你的类 B
  • 图像比较 - 旋转、对齐和缩放

    我有以下需求 有一些表格 即空白表格 例如调查中使用的表格 那些没有填充信息的 从现在开始我将称之为图像模板 除了图像模板之外 我还有很多图像 这些图像本质上都是充满信息的图像模板 例如 有一项调查 有两个空白需要填写 这些是图像模板 许多
  • 在 Windows XP 中从数据包中检索标头目标地址的函数

    我有兴趣检索入站数据包发送到的目标地址 例如在 Linux 上你可以使用recvmsg res recvmsg socket msghdr 0 get cmsg CMSG FIRSTHDR msghdr struct in pktinfo
  • Win2D 在 C++/WinRT 中可用吗?

    我需要在我的 cppwinrt 项目中使用 win2D 使用 Win2D 示例文件作为模型 我尝试模仿其设置 放入该项目中的 win2d 包文件 复制自定义构建步骤 但我无法编译它 我记得有人谈论过 Win2D 很快就会添加到标准 cppw
  • 如何在 u32 和 usize 之间进行惯用转换?

    此代码有效并打印 b fn main let s abc let ch s chars nth 1 unwrap println ch 另一方面 此代码会导致类型不匹配错误 fn main let s abc let n u32 1 let
  • 自动保存分割结果 - Matlab 阿拉伯语 OCR

    完整的分割代码 Preprocessing Segmentation Original Code of Segmentation by Soumyadeep Sinha with several modification by Ana Sa
  • SQL Server Compact Edition 3.5 对于简单查询给出“多步操作生成错误”错误

    我通过 Microsoft 的 OLEDB 3 5 SQL CE 驱动程序使用 SQL Server CE 数据库 这是我的连接字符串 Provider Microsoft SQLSERVER CE OLEDB 3 5 Data Sourc
  • 如何避免 JavaScript 中自动重复的按键事件?

    如果用户按住该键 则会触发多个 keydown 事件 出于可用性原因 我需要使用 keydown 而不是 keyup 但我想避免这种情况 我的相关代码如下 document keydown function e var key 0 if e
  • 如何使用java一次性检查多个字符串值是否为空或空白

    我有一个场景来验证给定的输入参数是否为空 我有数据类型的字段列表string and date productId productName productType productRating productSellDate and prod
  • 为什么 for in 循环返回字符串而不是我的对象? [复制]

    这个问题在这里已经有答案了 我有嵌套对象 var obj nestobj1 title some 1 title text some text nestobj2 title some 2 title text some text 我正在使用
  • 应用程序崩溃时没有致命异常的迹象 | NLog 版本 2 |紧凑框架3.5

    我有一个 Net Compact Framework 3 5 应用程序 它使用 Nlog 2 0 版来记录信息 错误和致命异常 大多数情况下 日志记录会按预期工作 并在崩溃之前记录致命异常 但有时我们会观察到应用程序崩溃时没有留下任何错误
  • mat-form-field 轮廓边框颜色

    它看起来像边框颜色mat form field已经升级 v15是黑色的 v12是灰色的 是否可以添加一个选项来更改基础颜色 的边界mat form field由块创建 mdc notched outline 您可以将边框设置为此 但它与旧边
  • 无法为数组指定显式初始化程序

    为什么这个在 VS 2013 中编译 int main int a 3 1 2 3 return 0 但这给出了错误 class TestClass int a 3 1 2 3 我如何解决它 来自 Bjarne 的 C 11 FAQ 页面