Problem mit Konstantenausdruck
-
Hallo zusammen,
Warum muss ich hier schon dynamisch arbeiten:const int size = CEX->xMax * 50; double* x = new double[size], * y = new double[size];Das Produkt CEX->xMax * 50 steht steht doch schon vor der Arraydeklration fest. Warum könnte ich dann nicht das schreiben:
const int size = CEX->xMax * 50; double x[size], y[size];Vielen Dank
lg, freakC++
-
Aber wahrscheinlich ist CEX->xMax eine Variable, welche erst zur Laufzeit bekannt ist. Statische Arrays brauchen nicht nur einen konstanten Wert, es muss ein Wert sein, welcher zur Kompilezeit bekannt ist.
Grüssli
-
Jap, da hast Du recht! Ok, vielen Dank für die Antwort.
lg, freakC++
-
freakC++ schrieb:
const int size = CEX->xMax * 50; double* x = new double[size], * y = new double[size];size ist zwar konstant aber kein "konstanter Ausdruck" in dem Sinne, wie er im C++ Standard verwendet wird: "konstant und berechenbar zur Compile-Zeit". Das kann er hier schon nicht sein, weil eine Dereferenzierung Teil des Initialisierers ist. Der Initialisierer ist also kein konstanter Ausdruck und daher kann es size auch nicht sein.
(siehe Seite 104 bzw Abschnitt 5.19 dieses Entwurfs)
Gruß,
SP