Re: Special Case: Creating a variable in a function?
On Apr 17, 5:58 am, Justcallmedr...@yahoo.com wrote:
How would you declare and assign a variable inside a function THAT HAS
THE NAME OF A PARAMETER YOU PASSED
example:
when you call createvariable("myvariable")
it will declare the variable "myvariable"
and then maybe assign it something.
myvariable = "this is a real variable"
also so you can use it later, outside of the function.
Hello,
You are trying achieve one more level of generalization on Language.
Its like, you want your own variable generation at runtime!
1) If your variable type is fixed, i.e. you need just String type..--
You can create std::map<string, string> varMap
varMap["myvariable1"] = "1st variable";
varMap["myvariable2"] = "2nd variable";
at any time, you cat get your variable.
2) If variable type is also not fixed, you must need add extra setup.
NOTE: Code written below is just explanation & Not compiled or
working!
union varValue{
string strValue;
int intValue;
}
enum varType {STRING, INT} //Again enum, i was advised yesterday that,
enum is part of fully OO.
struct variable {
varType type;
varValue value;
}
std::map<string, variable> variableTable;
variable var1, var2;
var1.type = STRING;
var1.value = "my string variable value";
variableTable["myVar1"] = var1;
var2.type = INT
var2.value = 10;
variableTable["myVar2"] = var2;
Now you can have anytime, your variable's type & its value known to
you at runtime.
But still, getting value from varibaleTable is complex job.
Either you need to remember that myVar2 is int & you would always
write,
int t1 = variableTable["myVar2"].value
string s1 = variableTable["myVar1"].value
Or you need to write function that can manage typecasting or throw
exception! Here i think the solution fail.
still it could be like this,
int i1 = getValue(variableTable["myVar1"], INT); //myVar1 is string!!
& getValue would throw exception when it checks that
variableTable["myVar1"].type != INT
Finally, above could be considered as non-standard programming
practice.
Vijay.