Unbekannter Datentyp speichern/lesen
-
Hi,
könnte man eine Methode schreiben in der man einmal den Namen und einmal ein unbekannten Datentyp mitliefert und diese parameter dann in eine STL map abgespeichert werden:
Pseudocode:
addAttribute(std::String name, void* typ) { std::map<std::string, void*> AttributListe; std::pair<std::string, void*> paar; paar.first=name; paar.second=typ; AttributListe.insert(paar); }
und dann anschließend mittels vielleicht ?typeid? oder ?dynamic_cast? zu ermitteln was für ein Datentyp abgespeichert wurde also ob es ein int, string oder bool ist?
Pseudocode:
... if (typeid(paar.second)== int) { std::cout << "es ist ein int" << std::endl; } ...
Hab das noch nicht ausprobiert aber ist der Pseudocode so möglich? Wenn nicht wie kann man es dann sinnvoll umsetzen?
MFG
xmarvel
-
Nein, das ist so nicht möglich. Der Typ ist und bleibt void*.
Ich würde an deiner Stelle für jeden Typ ein eigenen Container nehmen.
-
Das wollte ich eigentlich vermeiden da die komplette liste ausgegeben werden soll und dann mit hilfe von set und get Methoden die Attribute gesetzt/geholt werden sollen.
Das wären dann ziemlich viele Methoden nur für die Attribute da für jeden container dann jeweils set und get Methoden bereitstellen müsste. Dachte ich kann ein Container holen und dann irgendwie entscheiden was für ein Datentyp enthalten ist. Aber wenn es nicht anders geht dann ist das warscheinlich die beste Lösung.THX
xmarvel