gpt4 book ai didi

c++ - 初始化类构造函数初始化列表中对象数组的第一个条目

转载 作者:行者123 更新时间:2023-11-30 02:14:55 25 4
gpt4 key购买 nike

如果我有类 A 声明类 B 并实例化它的一个数组。

class A{
class B{
int x, y;
};
B arrB[10];

public:
A();
};

然后,我的问题是我想使用初始化列表初始化 A 类中“arrB”的前两个对象:

A::A(): arrB[0](1, 2), arrB[1](3, 4) {}

但是编译器不接受。

是否可以初始化数组的特定对象?如果是,怎么做?

谢谢

最佳答案

问题是 B 默认将其成员隐藏为 private,因为它是一个 class。将 B 声明为结构,或将 int x, y 公开为 public 以便能够使用聚合初始化:

class A{
class B{
public:
int x, y;
};
B arrB[10] = {{1,2}};

public:
A();
};

第二个问题是您没有正确使用聚合初始化。

A::A(): arrB[0](1, 2), arrB[1](3, 4) {}

应该是

A::A(): arrB{{1, 2}, {3, 4}} {}

Demo

关于c++ - 初始化类构造函数初始化列表中对象数组的第一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56996032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com