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