c++ - Referenzen-array
Ich wounder wie ich kann, damit dieser code funktioniert?
#include <iostream>
using namespace std;
void writeTable(int (&tab)[],int x){
for(int i=0;i<x;i++){
cout << "Enter value " << i+1 <<endl;
cin >> tab[i] ;
}
}
int main(void){
int howMany;
cout << "How many elemets" << endl;
cin >> howMany;
int table[howMany];
int (&ref)[howMany]=table;
writeTable(ref,howMany);
return 0;
}
Und hier sind die Fehler, die ich habe:
|4|error: parameter ‘tab’ includes reference to array of unknown bound ‘int []’|
|18|error: invalid initialization of reference of type ‘int (&)[]’ from expression of type ‘int [(((unsigned int)(((int)howMany) + -0x00000000000000001)) + 1)]’|
|4|error: in passing argument 1 of ‘void writeTable(int (&)[], int)’|
Danke für die Hilfe
- C++ nicht haben VLA.
- Sie könnte verwenden std::vector
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie beabsichtigen, pass die Größe des Arrays, dann entfernen Sie den Verweis
entspricht
also kein kopieren erfolgt, wenn das ist Sorge.
Wenn Sie wollen, um ein array als Referenz, dann MÜSSEN Sie die dimension. z.B.
Natürlich der beste von den beiden ist die Dritte Lösung, das ist die Verwendung von std::vector und übergeben Sie Sie als Verweis-Referenz auf const oder durch den Wert, wenn nötig. HTH
Hier ist etwas mehr C++ - Stil, es zu tun:
vector<int>::iterator
alternative vstab[i]
Müssen Sie nicht angeben, die dimension des Arrays, wenn Sie
writeTable
eine Funktion Vorlage..
std::vector
)?Folgenden Amardeep Antwort, hier ist ein C++11 Weg, es zu tun:
Beachten Sie die range-basierte
for
verwendet inwriteTable
.Arrays von Referenzen sind illegal, wenn das ist, was Sie zu tun versuchen. Es ist nicht 100% klar, um mich von dem Titel.