Hilfe bei Entwicklung von Scriptsprache. Wie regristriere ich runtime Variablen ?
-
Hallo,
Bei Scripts kann man simpler weise einfach Variablen .. mit Namen definieren.
Mein Problem ist, dass ich einen direkten Zugriff ueber den Namen der Variablen (im Script) auf den eigentlichen Pointer haben moechte.
Bsp. :<myscript>
int help = 5; // Variable help vom Typ int
.
.
.
</myscript>nun erkennt die Scriptsprache help als int mit '5' .., jedoch verschwendet es derzeit Zeit die Variable im Speichersystem abzulegen bzw. spaeter wieder zu finden und zu verwenden. Meine Frage ist nun, gibt es eine Moeglichkeit, 'help' direkt als runtime Variable zu regristrieren ?
Wenn nicht, gibt es eine moeglichkeit direkt in den Speicher zu schreiben und diesen als 'help' zu regristrieren ?Die einzige Information, ueber die ich den Speicher abfragen kann, ist der Name der Variable. Ich waere echt gluecklich, wenn es einen Weg gibt, das direkt ueber den Namen zu machen.
Ich hoffe, meine Gedanken sind nachvollziehbar.Danke,
ZackZackZack.
-
mit std::map kannst du das machen:
struct variable { //... }; std::map<std::string,variable*> variables; variables["help"]=new int_variable(5);
-
das sieht erstmal ziehmlich gut aus. Ich werde es gleich ausprobieren.
Danke,
ZackZackZack.
-
ich bekomme es einfach nicht zum laufen.
ich habe es mit insert versucht und bekomme den gleichen Fehlerstd::map<std::string,variable*> variables; #include "stdafx.h" #include <map> #include <iostream> struct variable { int data; }; std::map<std::string,variable*> variables; std::map<std::string,variable*>::iterator var_it; std::map<std::string,variable*>::const_iterator var_const_it; void main(void) { variables.insert(std::make_pair("hello", 5)); //selber Fehler variable temp; variables["help"] = new variable(temp); // selber Fehler variables["help1"] = new variable; // selber Fehler variables["help"]=new variable(5); // laeuft nicht }'selber Fehler' Fehlermeldung :
c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : Vorlagenargument für 'const std::_Tree<_Traits> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : Vorlagenargument für 'const std::_Tree<_Traits> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : Vorlagenargument für 'const std::_Tree<_Traits> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt> &)' : Vorlagenargument für 'const std::reverse_iterator<_RanIt> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt> &)' : Vorlagenargument für 'const std::reverse_iterator<_RanIt> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt> &)' : Vorlagenargument für 'const std::reverse_iterator<_RanIt> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::_Ptrit<_Ty,_Diff,_Pointer2,_Reference2,_Pointer2,_Reference2> &,const std::_Ptrit<_Ty,_Diff,_Pointer,_Reference,_Pointer2,_Reference2> &)' : Vorlagenargument für 'const std::_Ptrit<_Ty,_Diff,_Pointer2,_Reference2,_Pointer2,_Reference2> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::_Ptrit<_Ty,_Diff,_Pointer2,_Reference2,_Pointer2,_Reference2> &,const std::_Ptrit<_Ty,_Diff,_Pointer,_Reference,_Pointer2,_Reference2> &)' : Vorlagenargument für 'const std::_Ptrit<_Ty,_Diff,_Pointer2,_Reference2,_Pointer2,_Reference2> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::_Ptrit<_Ty,_Diff,_Pointer2,_Reference2,_Pointer2,_Reference2> &,const std::_Ptrit<_Ty,_Diff,_Pointer,_Reference,_Pointer2,_Reference2> &)' : Vorlagenargument für 'const std::_Ptrit<_Ty,_Diff,_Pointer2,_Reference2,_Pointer2,_Reference2> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)' : Vorlagenargument für 'const std::pair<_Ty1,_Ty2> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)' : Vorlagenargument für 'const std::pair<_Ty1,_Ty2> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2784: 'bool std::operator <(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)' : Vorlagenargument für 'const std::pair<_Ty1,_Ty2> &' von 'const std::string' konnte nicht hergeleitet werden c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\functional(139): error C2676: Binärer Operator '<' : 'const std::string' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht'laeuft nicht' Fehler :
g:\Projects\test\test.cpp(32): error C2664: 'variable::variable(const variable &)' : Konvertierung des Parameters 1 von 'int' in 'const variable &' nicht möglichhat einer eine Ahnung warum ? Ich kannte map vorher noch nicht, also habe ich so zu sagen keine Ahnung.
Danke.
-
#include <string>
-
Danke, es laeuft jetzt wunderbar

-
int main()! nicht void main()!