vcExp 9.0 array[Variable] funktioniert nicht

Guten Tag,
ich benutze vcExpress 9.0 unter Windows Vista zum Compilieren con C++ Code.

Mein Problem:

int distances[5];

klappt

int N = 5;
int distances[N];

klappt nicht

Als Fehler wird

error C2057: Konstanter Ausdruck erwartet
error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
error C2133: ‚distances‘: Unbekannte Größe

ausgegeben.

Hat jemand Rat, was ich falsch mache oder umstellen muss damit vc das akzeptiert?

Danke im Voraus,
Tobi.

int N = 5;
int distances[N];

klappt nicht

Auf dem Stack angelegte Arrays müssen eine zur Kompilierzeit bekannte (konstante) Größe haben. const int N = 5 könnte funktionieren, ist aber vermutlich nicht das, was du willst. Es gibt auch Compiler, die hier vom Standard abweichend einen dynamischen Wert akzeptieren (ich glaube gcc - ich war mal sehr verwirrt, als es woanders nicht ging :wink:).

Wenn du einen Array dynamischer Größe möchtest, musst du ihn entweder auf dem Heap anlegen (int* distances = new int[N]) und die Freigabe vor dem Rücksprung nicht vergessen (delete[] distances), oder etwas ausgefeilteres wie den std::vector benutzen, der sich für dich darum kümmert.

Viele Grüße,
Sebastian