C++ Variablen Container?

Gast #635825
Lesenswert?

Hallo,

ich bin auf der suche nach einem Container Objekt um dort dynamische 
Variablen mit verschiedenen Datentypen zu speichern.

Hier ein Beispiel wie ich mir das im groben vorstelle.
1
container->Set("variable_1", int, 1234);
2
container->Set("variable_2", string, "test");
3

4
int a;
5

6
a = container->variable_1;
7
// a == 1234
8

9
string b;
10
b = container->variable_2;
11
// b == test

Beim Suchen bin ich auf die map Funktion gestoßen, aber da ist das 
Problem das ich für jeden Datentyp eine eigene Liste/Objekt brauche.

Wichtig ist das alle Variablen(typen) im selben Objekt abgelegt werden 
und anschließend über ein einheitlichen Operator/Funktion abgeruffen 
werden können, wie ist relativ egal, z.B. container['variable_1'] oder 
auch container->Get("variable_1") wäre ok.

Ist es überhaupt möglich eine Funktion verschiedene Datentypen 
zurückzugeben lassen?
Gast #636178
Lesenswert?

> Wichtig ist das alle Variablen(typen) im selben Objekt abgelegt werden
> und anschließend über ein einheitlichen Operator/Funktion abgeruffen
> werden können,

Was heißt "einheitlichen"? Es gibt variant-Typen oder sowas wie 
boost::any.

> wie ist relativ egal, z.B. container['variable_1'] oder
> auch container->Get("variable_1") wäre ok.

Woher soll der Compiler da denn wissen, als welchen Typ er es 
extrahieren soll?

> Ist es überhaupt möglich eine Funktion verschiedene Datentypen
> zurückzugeben lassen?

Mit Templates geht das, aber der Typ muß natürlich zur Compilezeit 
feststehen. Wenn du's dynamischer brauchst, mußt du mit Polymorphie 
arbeiten.
Gast #642591
Lesenswert?

oh menno das ist domain von dynamischen sprachen
dafür sind sie auch da!

aber nun gut, man kann auch was hacken
was wäre mit einer abstrakten class object,
mit virtuallen funktionen get/set.
davon leitest du intobject, strobject ...
und als container nimmst du dann
std::map<std::string, object> m;
m["var1"] = new strobject("stringvalue");
m["var2"] = new intobject(123);

std::string tmp = m["var1"].get();

ausm kopf gehackt :)

grüsse
Gast #643880
Lesenswert?

> aber nun gut, man kann auch was hacken
> was wäre mit einer abstrakten class object,
> mit virtuallen funktionen get/set.

Preisfrage: Was liefert get zurück, bzw. was wird an set übergeben?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren