Konstanten in Klassen?
-
Du initialisierst nicht, Du weist zu.
Zum Problem: Schreib ein 'static' vor die Variablenvereinbarung oder nimm ein 'enum'.
-
so, jetzt hab ch es so wie evil gemacht.
ABer wenn ich dann das hier machen will:
short int Indizes[m_AnzIndizes] = {//...};
dann gibt er mir aus, das ein konstanter Ausdruck erwartret wird.
Wieso?
-
Beim Deklarieren eines Arrays muss die Größe zur Kompelierzeit bekannt sein.
Wenn die Größe nicht bekannt es muss er dynamisch mit new[] und delete[]
angelegt werden.
-
Ich weiß, aber ich habe doch die Konstanten initialisiert. Und Konstanten stehen doch schon zur Kompilierzeit fest oder niht?
-
Steht das Array denn in einer Methode der Klasse drin?
-
Wenn du vorher schon weist das diese grösse brauchst dann definere
deine Variablen alsconst int bla = 44; usw.
ausserhalb deiner Klasse
-
@dreaddy:
Ja, es wird in einer Methode erzeuge und dort auch wieder gelöscht:CPlatte::function() { SvertexPlatte Array[21]; // anstatt 21 würde ich eben gerne die Konstante einsetzen. //... }
@evil:
Ich hab mir das auch schon überlegt, aber nach den Regeln der OOP(ich hoffe ich hab sie kapiert...) sollte doch jedes Objekt selbst wissen, was es amchen muss, und kein anderes muss es wissen, daher wollte ich die Konstante eben in der Klasse definieren.Gruß, mAxi
-
Hast du die Antwort von Daniel E. nicht gelesen?
-
zur erinnerung: static dazupacken. dann kannst du in der klasse auch direkt schreiben
static const int x = 10;
oder
const static int x = 20;
-
Original erstellt von Maxi:
Und Konstanten stehen doch schon zur Kompilierzeit fest oder niht?tun sie das?
#include <iostream> int main() { int temp; std::cin>>temp; int const konstante=temp; }