首页 > 解决方案 > 在类构造函数初始化列表中初始化对象数组的第一个条目

问题描述

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

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

 public:
    A();
};

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

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

但是编译器不接受它。

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

谢谢

标签: c++constructorinitializer

解决方案


问题是B默认情况下隐藏其成员,private因为它是一个class. 声明B一个结构,或公开int x, ypublic能够使用聚合初始化:

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}} {}

演示


推荐阅读