const Atribute in einer klasse
-
CPPKILLER schrieb:
edit: die selbe fehlermeldung bekomme habe ich auch mit static bekommen.
und wenn ich doppel klick auf die fehlermeldung mache, springt er sofot hinter zuweisungs operator.Welchen Compiler benutzt du? Was genau hast du geschrieben?
Michael E. schrieb:
static const int scr_max_x = 80;THX
kannst du mit paar sätzen erklären was dieses "static" bewirken soll, was das ist ????static bedeutet in diesem Zusammenhang, dass die Membervariable nur ein einziges Mal erzeugt wird, egal wie viele Instanzen der Klasse du erstellst.
-
Hallo
Du kannst die Variablen, ja auch mit Hilfe der Initialisierungsliste im C'tor initialisieren.
chrische
-
chrische5 schrieb:
Hallo
Du kannst die Variablen, ja auch mit Hilfe der Initialisierungsliste im C'tor initialisieren.
chrische
ja aber ich will 2 arrays anlegen und die array größe muss ja const sein.
z.b. array[groesse]; //groesse muss ja dann const sein oder ???
ich benutze Borland C++ 4.5 ist zwar alt, reicht aber für das was ich brauche..
-
class CTest { private: const int groesse = 10; int x, y; int array[groesse]; // <-- Für son feld brauche ich die konstante(n) public: CTest(); int getX(void); ... };das ist jetzt son beispiel wo ich soeine fehlermeldung bekomme.
-
Mit static const int funktioniert das genau so. Wenn Du einen Fehler bekommst (bekomme ich mit VC++6 z.B. auch), ist der Compiler zu alt.
-
LordJaxom schrieb:
Mit static const int funktioniert das genau so. Wenn Du einen Fehler bekommst (bekomme ich mit VC++6 z.B. auch), ist der Compiler zu alt.
was fürn compiler würdest du mir empfehlen... ?
ich benutze borland C++ 4.5 wegen BGI, weil wir das in der schule brauchen.
-
Verwende den Enum-Hack.
http://www.cs.usyd.edu.au/~sholden/TEACHING/PP/2000summer/RESOURCES/TIC/tic0095.htmlIn older versions of C++, static const was not supported inside classes. This meant that const was useless for constant expressions inside classes. However, people still wanted to do this so a common solution (typically referred to as the “enum hack”) was to use an untagged enum with no instances. An enumeration must have all its values established at compile time, it’s local to the class, and its values are available for constant expressions. ...
-
Hallo
CPPKILLER schrieb:
chrische5 schrieb:
Hallo
Du kannst die Variablen, ja auch mit Hilfe der Initialisierungsliste im C'tor initialisieren.
chrische
ja aber ich will 2 arrays anlegen und die array größe muss ja const sein.
z.b. array[groesse]; //groesse muss ja dann const sein oder ???
ich benutze Borland C++ 4.5 ist zwar alt, reicht aber für das was ich brauche..
Du kannst doch auch einfach std::vector benutzen. Da haste ein dynamisches array und kannst die Größe jederzeit bestimmen und ändern.
chrische
chrische
-
CPPKILLER schrieb:
ja aber ich will 2 arrays anlegen und die array größe muss ja const sein.
z.b. array[groesse]; //groesse muss ja dann const sein oder ???
Nicht const. In den Klammern muss ein konstanter Ausdruck stehen. Das ist ein kleiner aber feiner Unterschied.
Mach es, wie Erhard schon sagte, mit dem enum Hack.private: enum { scr_max_x = 80, scr_max_y = 25 };Nicht wirklich schön, bei älteren Compilern geht's aber leider nicht anders.
-
groovemaster schrieb:
private: enum { scr_max_x = 80, scr_max_y = 25 };Nicht wirklich schön, bei älteren Compilern geht's aber leider nicht anders.
Danke
so hats funktioniert 