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
).
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