BYTE-Deklarierung
-
Alóha,
er meckert bei einer BYTE-Deklarierung rum:class Heightmap { private: static const int MAP_SIZE; static const int STEP_SIZE; static const float HEIGHT_RATIO; BYTE g_Heightmap[MAP_SIZE]; //Hier meckert er rum public: int Height(BYTE *pHeightMap, int X, int Y); void SetTextureCoords(int x, int z); void LoadRAW(const char *Filename, int Size, BYTE *pHeightmap); void RenderHeightmap(BYTE pHeightmap[]); };Woran liegt das?
Fehlermeldung:error C2057: Konstanter Ausdruck erwartetWeiss auch nicht was mit "Konstanter Ausdruck erwartet" gemeint ist.
Vielen Dank im Voraus!

-
Er meckert nicht über
BYTEsondern überMAP_SIZE.MAP_SIZEist kein konstanter Ausdruck, sondern variabel. Das ist nicht erlaubt.
Wenn du ein Array mit zur Laufzeit variabler Länge willst, musst du es über den Heap allokieren oder einenstd::vectornehmen.Edit: Na toll, hast das const noch rein getan gerade oder bin ich wirklich so blind?
Wie auch immer, wenn die Definition der integralen Konstante nicht in der Klasse erfolgt, so geht es auch nicht.Grüssli
-
Dravere schrieb:
Er meckert nicht über
BYTEsondern überMAP_SIZE.MAP_SIZEist kein konstanter Ausdruck, sondern variabel.Ne, ist nicht variabel, ist ja schließlich const
Der Compiler muss aber an der Stelle der Array-Deklaration die Größe kennen - zum Glück kann man aber integrale statische konstante Variablen "inline" deklarieren:class Heightmap { private: static const int MAP_SIZE = 50; ... BYTE g_Heightmap[MAP_SIZE]; // Geht jetzt
-
@Badestrand,
Siehe mein Edit. Anscheinend hat way noch etwas am Code rumgepfuscht oder ich erblinde gerade
Grüssli
-
Hey,
entschuldigt mich, wenn ich eingeloggt bin dauert es ca. 15 min. eine Seite zu laden.Nein, ich hatte im Code nichts verändert, dass 'const' stand schon da, dass was ich verändert hatte war der Kommentar.
Danke, läuft, cu.