Ich habe folgendes Problem mit meinem Code:
int n = 10;
double tenorData[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Gibt den folgenden Fehler zurück:
error: variable-sized object 'tenorData' may not be initialized
Während mit double tenorData[10]
Arbeiten.
Weiß jemand warum?
c++
arrays
initialization
size
msmf14
quelle
quelle
Antworten:
In C ++ sind Arrays mit variabler Länge nicht zulässig. G ++ erlaubt dies als "Erweiterung" (weil C es erlaubt), also können Sie in G ++ (ohne
-pedantic
den C ++ - Standard zu befolgen) Folgendes tun:Wenn Sie ein "Array mit variabler Länge" möchten (in C ++ besser als "Array mit dynamischer Größe" bezeichnet, da Arrays mit variabler Länge nicht zulässig sind), müssen Sie entweder selbst Speicher dynamisch zuweisen:
Oder, noch besser, verwenden Sie einen Standardcontainer:
Wenn Sie dennoch ein geeignetes Array wünschen, können Sie beim Erstellen eine Konstante und keine Variable verwenden :
Wenn Sie die Größe einer Funktion in C ++ 11 abrufen möchten, können Sie Folgendes verwenden
constexpr
:quelle
vector
sind unglaublich nützlich.