Information über die Attribute einer Klasse
-
ogni42 schrieb:
Kann mir mal jemand bitte ein Beispiel zeigen, wo man Reflection wirklich braucht, weil es anders nicht geht (i.S.v. alles andere gibt ein schlechteres Design)?
Generische Serialisierung.
-
senfdazu schrieb:
ogni42 schrieb:
Kann mir mal jemand bitte ein Beispiel zeigen, wo man Reflection wirklich braucht, weil es anders nicht geht (i.S.v. alles andere gibt ein schlechteres Design)?
Generische Serialisierung.
Wieso sollte man dafür unbedingt Reflection brauchen?
-
dot schrieb:
senfdazu schrieb:
ogni42 schrieb:
Kann mir mal jemand bitte ein Beispiel zeigen, wo man Reflection wirklich braucht, weil es anders nicht geht (i.S.v. alles andere gibt ein schlechteres Design)?
Generische Serialisierung.
Wieso sollte man dafür unbedingt Reflection brauchen?
Schreib eine Funktion in C++ (Standard) die jede beliebige Klasse in einen String schreibt und wieder ausliest. Jede beliebige Klasse bedeutet, dass die Klasse kein spezielles Interface oder Methoden haben muss und ich nicht irgendwo Variablen angeben muss, also generisch.
-
Interessante Definition von "generisch". Zeig mir mal so ein Beispiel in irgendeiner anderen Sprache für nichttriviale Fälle, das z.B. auch mit der Tatsache zurechtkommt, dass die Member einer Klasse sich im Laufe der Zeit ändern können und werden, man aber trotzdem mit Serialisierungen in älteren Formaten kompatibel bleiben muss.
-
dot schrieb:
Interessante Definition von "generisch".
Ja, generisch bedeutet mehr, als nur Templates verwenden.
Zeig mir mal so ein Beispiel in irgendeiner anderen Sprache für nichttriviale Fälle, das z.B. auch mit der Tatsache zurechtkommt, dass die Member einer Klasse sich im Laufe der Zeit ändern können und werden, man aber trotzdem mit Serialisierungen in älteren Formaten kompatibel bleiben muss.
Geht, wenn man es generisch macht und neue Member so läßt, wie sie default initialisiert wurden. Du kannst jetzt dir irgendwelche Sachen ausdenken, wo x von Version 1 zu y in Version 2 werden muss, aber dann ist es nicht mehr generisch, sondern speziell.
-
senfdazu schrieb:
dot schrieb:
Interessante Definition von "generisch".
Ja, generisch bedeutet mehr, als nur Templates verwenden.
Mir ist klar was generisch bedeutet.
senfdazu schrieb:
Zeig mir mal so ein Beispiel in irgendeiner anderen Sprache für nichttriviale Fälle, das z.B. auch mit der Tatsache zurechtkommt, dass die Member einer Klasse sich im Laufe der Zeit ändern können und werden, man aber trotzdem mit Serialisierungen in älteren Formaten kompatibel bleiben muss.
Geht, wenn man es generisch macht und neue Member so läßt, wie sie default initialisiert wurden. Du kannst jetzt dir irgendwelche Sachen ausdenken, wo x von Version 1 zu y in Version 2 werden muss, aber dann ist es nicht mehr generisch, sondern speziell.
Kannst du das etwas genauer erläutern?
-
senfdazu schrieb:
ogni42 schrieb:
Kann mir mal jemand bitte ein Beispiel zeigen, wo man Reflection wirklich braucht, weil es anders nicht geht (i.S.v. alles andere gibt ein schlechteres Design)?
Generische Serialisierung.
Genau das mache ich! Hast du mir einen Tipp wie ich weiterkomme?
-
senfdazu schrieb:
Generische Serialisierung.Wie geht das denn bitte mit Reflection einfacher? Da würde ich mal gerne Code zu sehen. So einfach als Behauptung kann ich das nicht glauben. Und dann sollten wir mal Alternativen gegenüber stellen.
-
ogni42 schrieb:
senfdazu schrieb:
Generische Serialisierung.Wie geht das denn bitte mit Reflection einfacher? Da würde ich mal gerne Code zu sehen. So einfach als Behauptung kann ich das nicht glauben. Und dann sollten wir mal Alternativen gegenüber stellen.
Dann schreib doch zuerst mal eine Generische Serialisierung in C++, wenn du meinst, dass das geht. fabske will es auch wissen.
-
boost.serialize?
-
dot schrieb:
boost.serialize?
Genau das verwende ich.