Vektor von Daten eines dynamischen Typs
-
Hallo,
gibt es irgendwelche Bibliotheken, wo man Vektoren so verwalten kann, dass man den Typ der Elemente verändern kann?
Also z.B. nach dem Muster:
Vektor* vektorA = new Vektor(32); vektorA::iterator vA = vektorA.begin(); int a = 1; Vektor* vektorB = new Vektor(16); vektorB::iterator vB = vektorB.begin(); short b = 2; vA.insert(a); vA.insert(a); vB.insert(b); vB.insert(b); if(vA->size() == vB->size()) vektorA.mergeWith(vektorB); // Nun ist ein Element von vektorA 48 Byte gross, der Vektor 96 Bytes großOK, ich schätze dass es wahrscheinlicher ist, dass so etwas in einer C-Bibliothek implementiert ist, aber gibt es sowas überhaupt?
Vielen Dank für eure Tips!
-
Hallo,
eigentlich geht sowas nicht, C++ ist statisch typisiert; das, was Du vorhast, erfordert dynamische Typisierung.
Mithilfe von OOP wäre es möglich, indem man halt Klassen voneinander erben lässt und einen Vektor mit Zeigern auf die Basisklasse baut. Eine andere mögliche Lösung ist die Verwendung von Boost.Variant. Aber ich behaupte mal, dass das, was Du vorhast, anders viel einfacher und schöner ginge. Denn allgemein ist die statische Typisierung von C++ eher Vorteil als Nachteil und man sollte *mit* den Eigenschaften dieses Typmodells arbeiten anstatt zu versuchen, mit Hacks darumherumzuarbeiten.
-
Und das, was Du in der letzten Zeile vorhast, ist so überhaupt nicht möglich.