c++ - 在类构造函数初始化列表中初始化对象数组的第一个条目
问题描述
如果我有声明 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}} {}
演示
推荐阅读
- python - 从提取的 JSON 时间索引中获取分钟,与当前时间进行比较。
- regex - sas、prchange、reg ex、非结构化数据
- bash - 如何将 git bash 终端恢复到以前的彩色状态?
- excel - 在vbscript中用管道分隔文本文件到csv文件
- ruby - Ruby - 显示文件时的几个问题
- excel - 循环执行时间过长
- go - 我的 Find 功能是否遵循最佳实践
- python - create_module_spec - tfhub
- javascript - 使用客户端 JavaScript 将文件附加到 PDF?
- c# - 如何使用 WPF 窗口从任何机器上的桌面文件夹启动应用程序