我知道您可以使用初始化列表来初始化整个数组,如下所示:
struct s {
int a[1];
s (int b): a{b}{}
};
,但是是否可以设置一个特定成员的值?因为这:
struct s {
int a[1];
s (int b): a[0]{}
};
不起作用并抛出两个错误:
expected '(' before '[' token
and
expected '{' before '[' token.
您可以通过将值放置在适当的位置来初始化数组的元素聚合初始化 https://en.cppreference.com/w/cpp/language/aggregate_initialization.
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
UPDATE(感谢@NathanOliver)
缺少的元素是零初始化 https://en.cppreference.com/w/cpp/language/zero_initialization.
struct s {
int a[2];
s (int b): a{b} {} // a[1] is already 0
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)