c++ - 将整数数组作为参数传递的 C++ 错误
问题描述
Range-for-statement 的后续操作无法使用数组函数参数构建范围表达式。
原来的错误是:
错误:无法使用数组函数参数“arr”构建范围表达式,因为数组类型“int []”的参数被视为指针类型“int *”
失败的代码:
void print(int (&arr)[int]){
for(int x: arr)
cout<<" "<<x;
cout<<endl;
}
固定代码:
template<int N>
void print(int (&arr)[N]){
for(int x: arr)
cout<<" "<<x;
cout<<endl;
}
我的问题是,为什么我们必须这样修复它?我不明白什么int (&arr)[int]
意思。
解决方案
这背后的基本原理是 C++ 只允许 constepr 用于数组维度。模板版本确保这N
是一个 constepr(编译时间常数),而不正确的版本让我们认为您打算使用运行时整数值作为数组大小 - 不幸的是,这在 C++ 中是被禁止的
推荐阅读
- java - 9x9 位板实现
- angular - 角度材料表中的角度 7 图像显示
- spring-data-redis - 工厂方法“redisConnectionFactory”抛出异常;主机名不能为 null 或为空
- python - 在 cloudera pyspark 笔记本中绘图不起作用
- php - 从带有重音符号的 SQL Server 中选择数据不适用于 PHP
- artifactory - 如何在 JFrog Artifactory 中获取所有回购所有者的姓名?
- node.js - 运行电子窗口商店时出现未处理的承诺拒绝错误
- php - 使用PHP删除选择中的所有n-lavels类别
- android - AAPT2 aapt2-3.4.0-5326820-windows 守护进程错误
- haskell - 是否可以在不使用列表函数或列表合成器的情况下计算以下迷宫的高度和宽度