c++ - 为什么在类定义中不能使用初始化器定义没有大小的数组?
问题描述
像这样的东西(不起作用):
class A {
int arr[] = {1, 2};
};
我的编译器错误:
a.cpp:2:9: error: flexible array member 'A::arr' in an otherwise empty 'class A'
2 | int arr[] = {1, 2};
| ^~~
我猜编译器认为这是一个灵活的数组(我不完全理解它是如何工作的)。
如果在类定义(全局或局部变量)之外,这可以正常工作:
int arr[] = {1, 2};
该数组的大小在编译时已知(在本例中为 2)。这是一种用于避免必须指定数组大小的符号,因为编译器只需查看聚合初始化程序中使用了多少元素就可以知道它。当然我可以只输入数字,但我不应该这样做!
解决方案
推荐阅读
- tensorflow - 正在解决:检查输入时出错:预期的 dense_125_input 具有 2 维,但得到了形状为 (192, 192, 1) 的数组
- css - 如何将 Bootstrap 4 卡片标题文本垂直对齐到底部
- amazon-web-services - 使用 Amazon SES 的自定义 TXT 记录
- c# - 无法解决资源
- asp.net-mvc - 如何编辑 WebViewPage(从元数据)?
- java - 堆栈窗格中的底部节点消失
- c# - 如何使用 C# 检查 .sqlite 文件中的表是否存在
- angular - Angular - 何时销毁会话并清除内存?
- excel - VBA中的IFERROR和IF公式
- python - 将循环中的数据附加到字典或系列中以获取新数据框