C++ Variablen Container?

Gast #635825
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
> 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
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
> 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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.