Ich habe den folgenden Code:
%Vor%Ich erhalte einen Fehler in der Zeile 'vec2 vPoints [myLines];' das besagt, dass Ausdrücke einen konstanten Wert haben müssen. Ich verstehe nicht, warum ich diesen Fehler bekomme, keine Hilfe?
Liegt das daran, dass myLines negativ sein könnte? idk.
Da myLines
kein const Ausdruck ist (was bedeutet, dass er zur Kompilierungszeit nicht bekannt ist), deklariert der obige Code ein Array variabler Länge, das in C ++ nicht erlaubt ist. Nur C99 hat diese Funktion, Ihr Compiler könnte dies als Erweiterung haben (aber das ist nicht Standard C ++).
Die Lösung für ein solches Commom-Problem ist: Verwenden Sie std::vector<T>
als:
Es sollte jetzt funktionieren.
Liegt das daran, dass myLines negativ sein könnte?
Nein, das liegt daran, dass myLines
keine Kompilierzeitkonstante ist.
Erläuterung:
%Vor% Erstellt ein Array mit variabler Länge, wobei myLines
value zur Laufzeit bestimmt wird.
Arrays mit variabler Länge sind in C ++ nicht zulässig. Es war ein Feature, das in C99 eingeführt wurde, und C ++ Standard unterstützt es nicht. Einige C ++ - Compiler unterstützen es jedoch als Erweiterung, es entspricht jedoch nicht dem Standard.
Für C ++ sollte die Größe eines Arrays zur Kompilierzeit bekannt sein und daher muss die Kompilierzeit konstant sein. myLines
ist keine Kompilierzeitkonstante und daher der Fehler.
Sie sollten einen std :: vector
verwenden C ++ hat keine Arrays variabler Länge. Die Größe eines Arrays muss zur Kompilierzeit bestimmt werden. Der Wert von myLines
ist nur zur Laufzeit bekannt, also wird dies nicht funktionieren.
Um Arrays zu verwenden, deren Größe nur zur Laufzeit bekannt ist, verwenden Sie std::vector
.
Tags und Links arrays c++ visual-studio vector