typeid speichern
-
hallo,
ist es möglich, die typeid() eines Objektes zu speichern?
ungefähr so:type_info ti = typeid(int)
-
laut msdn hat type_info einen name member. der einen const char* zurückgibt.
(http://msdn.microsoft.com/en-us/library/70ky2y6k(VS.80).aspx)
der darin enthaltene string kann natürlich gespeichet werden.
google hilft

-
@Fencer,
Nur wird dir der Name nichst bringen, da er nicht eindeutig sein muss. Der Name soll nur lesbar sein, das ist alles was der Standard vorschreibt.@daersc,
Der Typstd::type_infokann man nicht kopieren. Das zurückgegeben Objekt vontypeidist allerdings während des ganzen Programmes gültig. Daher kannst du dir einen Zeiger darauf speichern und weitergeben:std::type_info const* typeInfo = &typeid(int);Um dir das Leben zu vereinfachen, kannst du einen Wrapper für sowas bauen:
class TypeInfo { // Attributes // private: std::type_info const* m_type; // Constructors // public: TypeInfo() : m_type(0) { } TypeInfo(std::type_info const& type) : m_type(&type) { } // Methods // public: char const* name() const { assert(m_type); return m_type->name(); } bool before(TypeInfo const& typeInfo) const { assert(m_type); return m_type->before(typeInfo.m_type); } friend bool operator ==(TypeInfo const& lhs, TypeInfo const& rhs) { return (*lhs.m_type) == (*rhs.m_type); } // usw. }; // Verwendung, z.B: TypeInfo intType = typeid(int); TypeInfo copyType = intType; // möglichGrüssli
-
ok, ich hatte das speichern missverstanden (datei).

ich sollte mich mal an einen spruch halten den ich gerne schreibe: "Wer lesen kann ist klar im Vorteil"

-
Dravere schrieb:
Um dir das Leben zu vereinfachen, kannst du einen Wrapper für sowas bauen:
Oder einfach Loki::TypeInfo nehmen.