arrays - 无法在具有恒定大小的类中创建数组
问题描述
尝试在具有恒定大小的类中创建数组时出现 GCC 编译器错误。如果在主函数中做同样的事情就可以了。
const int n[] = { 4, 18 };
class C{
int a[n[0]];//error: array bound is not an integer constant before ']' token
};
int main() {
int b[n[0]];//it's ok here
}
解决方案
如果你改变
const int n[] = { 4, 18 };
至
constexpr int n[] = { 4, 18 };
它可以工作(刚刚用 gcc 7.4.0 测试过)。该数组被声明为在编译时进行评估,这是创建具有恒定大小的数组所必需的。
推荐阅读
- javascript - HTML 和纯 javascript 中的搜索框查找所有匹配的锚标记并显示结果
- javascript - 将 Firebase 数据库价值纳入云函数
- matlab - 在 Matlab 中插入不同时间的矩阵
- ansible - 如何在 INI 文件中使用加密变量 (ansible_ssh_pass)?
- reactjs - 如何从步数计算一个人的步伐?
- javascript - Button 创建的上传图片预览代码不会预览图片。Javascript/HTML
- python - 对大型 TIFF 堆栈 ndarray 上的 numpy/scipy 样条进行优化?
- javascript - Javascript - 在一个函数函数执行后一段时间内禁用所有嵌套函数
- xml - 无法加载 WixUIExtension.dll
- jira - Jira - 项目或时间