尝试在作为参数传递的数组上使用基于范围的 for 循环时对于非main函数,你可能会遇到编译错误。这是因为数组引用衰减为指针,丢失有关数组大小的信息。
要解决此问题,有两种方法:
您可以将数组作为引用传递以保留其大小信息。这种方法需要修改函数签名,如下所示:
<code class="cpp">void foo(int (&bar)[3]);</code>
对于可以处理不同大小数组的通用代码,您可以定义一个 接受任意大小的数组引用的模板函数:
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { // Range-based for-loop is valid now }</code>
以上是以下是一些标题选项,请记住问题格式并关注核心问题: **选项 1(直接且以问题为中心):** * **为什么基于范围的 For 循环在数组传递时失败的详细内容。更多信息请关注PHP中文网其他相关文章!