Beim Versuch, eine bereichsbasierte For-Schleife für ein Array zu verwenden, das als Argument übergeben wird Bei der Verknüpfung mit einer Nicht-Hauptfunktion kann es zu Kompilierungsfehlern kommen. Dies liegt daran, dass Array-Referenzen in Zeiger zerfallen und Informationen über die Größe des Arrays verloren gehen.
Um dieses Problem zu beheben, gibt es zwei Ansätze:
Sie können Übergeben Sie das Array als Referenz, um seine Größeninformationen beizubehalten. Dieser Ansatz erfordert eine Änderung der Funktionssignatur, wie unten gezeigt:
<code class="cpp">void foo(int (&bar)[3]);</code>
Für generischen Code, der Arrays unterschiedlicher Größe verarbeiten kann, können Sie ein definieren Vorlagenfunktion, die eine Array-Referenz beliebiger Größe annimmt:
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { // Range-based for-loop is valid now }</code>
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, unter Berücksichtigung des Fragenformats und der Konzentration auf das Kernthema: **Option 1 (direkt und problemorientiert):** * **Warum schlägt eine bereichsbasierte For-Schleife bei übergebenen Arrays fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!