如果我有一个声明了类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) {}

但是编译器不接受它。

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

谢谢

最佳答案

问题在于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

10-08 11:56