Variablenname als #define interpretieren
-
Hallo zusammen,
habe mal eine dumme Frage
Kann man den Wert in einer Variable als #define interpretieren? Genauer...Ich habe z.B. eine Definition
#define MAX_VALUE 100
Ich bekomme in einer Methode nun einen String übergeben, der folgendermaßen ausgebaut ist...
void setMaxValue(AnsiString asValue) { //In asValue ist nun der String "MAX_VALUE" verpackt //Wenn ich jetzt z.B. auf ein Array zugreifen möchte, dann würde ich nun //gerne den Wert des #defines nutzen array[InterpretiereAlsDefine(asValue)]; //Er sollte also nun auf das 100. Element zugreifen }
Ist schon doof, da ich leider nur den Namen des Defines in der AnsiString-Variable habe. Ich weiß jetzt leider nicht, wie ich sonst auf den INT-Wert zugreifen kann.
Ich denke ja nicht dass das geht, aber fragen schadet ja nix.
Gruß
-
Hallo
Nein das geht so nicht. Zur Laufzeit sind in C++ keine Symbolnamen mehr bekannt, und schon gar nicht die Namen von Prä-Compiler-Sachen wie defines.
Vermutlich kannst du auch gleich ganz auf das define verzichten (in C++ sollte man wenn überhaupt sowieso eher globale Konstanten verwenden). Verwende stattdessen eine std::map<String, int>, in die du deine Namen/Werte-Kombinationen einmalig einträgst. Dann kannst du jederzeit in dieser map nach dem String suchen lassen.bis bald
akari