c++ - 是否可以在 C++ 中使用初始化列表设置数组的特定成员?
问题描述
我知道您可以使用如下初始化列表初始化整个数组:
struct s {
int a[1];
s (int b): a{b}{}
};
,但是可以设置一个特定成员的值吗?因为这:
struct s {
int a[1];
s (int b): a[0]{}
};
不起作用并引发两个错误:
expected '(' before '[' token
和
expected '{' before '[' token.
解决方案
您可以通过聚合初始化将值放在适当的位置来初始化数组的元素。
struct s {
int a[2];
s (int b): a{b, 0} {} // sets a[0] with the value of b
// a[1] is set to zero
};
s foo(1);
std::cout << foo.a[0] << " " << foo.a[1]; // 1 0
更新(感谢@NathanOliver)
缺少的元素被零初始化。
struct s {
int a[2];
s (int b): a{b} {} // a[1] is already 0
};
推荐阅读
- python - 在 Gtk.Treeview 中设置我自己的拖动图标
- reporting-services - 如何在 SSRS 中使用 Lookup 表达式和 IIF 表达式?
- jpa - 更改 OPENJPA_SEQUENCE_TABLE 的默认名称
- c# - System.InvalidCastException “对象必须实现 IConvertible。” 使用 BinaryFormatter 反序列化字典时
- c# - 如何从 X509Certificate2 获取 RFC-1779 中的颁发者名称?
- angular - angular 5 多个路由器插座和子模块
- node.js - Mongoose:二进制子类型 4 到字符串
- bash - 解析作为另一个命令一部分的heredoc中的变量
- android - Cordova 应用在 Android 上几分钟后停止在后台播放音频
- typescript - 如何在元组中使用剩余参数?