Variablen Zugriff lokal global
-
Hallo,
ich habe einmal static int const x (in header) global und einmal int const x lokal wie kann ich auf die globale Variable in der Funktion wo die lokale Variable steht zugreifen? Mit ::x geht nicht, warum?Gruß
-
Hallo
<Klassenname>::x, das heißt wenn die statische Variable x in der Klasse Form1 deklariert ist, dann Form1::x
Du solltest deine Variablen besser benennen, so das lokale Variablen nicht wie Member- oder gar globale Variablen heißen können.
bis bald
akari
-
Oder sowieso auf globale Variablen verzichten. Sie führen nur zu problemen. Speziell dann wenn sie sogar noch gleich heissen. Dann ists nämlich besonders spannend in welchem Namespace sich der COmpiler grade verantwortlich fühlt.
-
Hallo,
ich würde ja gern auf die globale Variable verzichten, aber wie ändere ich dann einen static int const x Wert der in der header steht?
Jetzt mache ich es so: int s = 10; int const x = s; und in der Header steht z.B. static int const x = 20;Gruß
-
Hallo
wie ändere ich dann einen static int const x Wert
Gar nicht?
Konstanten werden ausschließlich initialisiert. Und mit global oder nicht hat das auch nichts zu tun.bis bald
akari
-
Hallo,
warum kann ich const dann so ändern int s = 10; int const x = s; ?
-
Hallo
wo änderst du denn den const-Wert? Du initialisiert ihn einmalig.
Versuch doch mal das hier :s = 10; int const x = 1 x = s;bis bald
akari
-
Hallo,
ja, ist klar, das geht nicht!
Bei mir wir aber jedes mal const neu initialisiert und da habe ich dann mein const zum edit Felder erstellen.Gruß
-
Hallo
Bei mir wir aber jedes mal const neu initialisiert und da habe ich dann mein const zum edit Felder erstellen.
Ist ja in Ordnung. Nur wozu brauchst du dann eine globale und eine lokale Konstante?
Entweder hast du ein Array mit wirklich fester Größe. Dann reicht eine globale Variable aus, um die feste Anzahl auch an allen benötigten Orten bekannt zu machen. Das ist einer der wenigen Gründe, um globale (konstante) Variablen zu benuzten. Auch wenn ich sie eher als static const des entsprechenden Forms deklarieren würde.Hast du aber ein (lokales) Array, desen Größe erst zur Laufzeit fest stehen kann, brauchst du keine globalen Variablen, sondern nur lokale. Und du solltest dann auch drüber nachdenken, lieber einen dynamischen Container wie DynamicArray oder std::vector zu nehmen.
bis bald
akari
-
Hallo,
also, ich erstelle zur Laufzeit eine bestimmte Anzahl an Edit Feldern die bei der Größenänderung des Forms entweder mehr oder weniger werden. (Start->Edit-Felder erstellen -> Größenänderung -> allen Edit-Felder löschen und neu erstellen )Wenn ich wüste wie ich immer nur eins mehr erstellen oder eins löschen könnte ohne alle neu zu erstellen dan würde ich natürlich das machen.?
Hast du einen Vorschlag akari?
Gruß
-
Hallo
akari schrieb:
Und du solltest dann auch drüber nachdenken, lieber einen dynamischen Container wie DynamicArray oder std::vector zu nehmen.
Schau in den Magazin-Teil unseres Forums. Da gibt es einen Artikel zu den STL-Containern, wo auch ein dynamisches Array dabei ist. Das kann genau sowas.
bis bald
akari
-
Hallo
Danke für deine freundliche Hilfe, ich werde mir mal diese Thema ansehen.
Gruß