【问题标题】:initialise a C++ std::array of struct in C++11在 C++11 中初始化一个 C++ std::array of struct
【发布时间】:2016-02-08 18:03:34
【问题描述】:

我已经阅读了类似的问题,但是如果我有一个结构,有人知道为什么

struct ArabicRoman {
    char roman;
    int arabic;
};

我可以通过以下方式初始化 C++ std::array

ArabicRoman M({'M', 1000});
ArabicRoman D({'D', 500});
array<ArabicRoman, 2> const SYMBOLS({ M, D });

我可以通过以下方式初始化一个 C 风格的数组:

ArabicRoman const SYMBOLS[]({ {'M', 1000}, {'D', 500} });

但是,以下内容未编译:

array<ArabicRoman, 2> const SYMBOLS({ {'M', 1000}, {'D', 500} });

初始化 C++ 风格的结构数组的任何解决方法?

【问题讨论】:

  • 你需要更多的牙套。

标签: c++ arrays c++11 struct


【解决方案1】:

你需要用大括号代替括号:

std::array<ArabicRoman, 2> const SYMBOLS {{ {'M', 1000}, {'D', 500} }};
                                         ^                           ^

LIVE DEMO

【讨论】:

  • 谢谢!我现在在参考文献en.cppreference.com/w/cpp/container/array 中看到这种双括号初始化风格是 C++11 语法,在 C++14 中不再需要
  • @stilvo 确实在简单的情况下你不需要双括号,但是使用嵌套的括号很难避免......
猜你喜欢
  • 1970-01-01
  • 2012-12-20
  • 2021-03-19
  • 2020-11-01
  • 2012-03-08
  • 2021-09-21
  • 2021-08-11
相关资源
最近更新 更多