Ich arbeite an einem C++ Projekt und versuche herauszufinden, wie man eine "dynamische" Variable erstellen kann.Python-style Variablen in C++
In Python können Variablen mehrere Typen haben:
variable = 0
variable = "Hello"
In Java ist dies auch (etwas) erreichbar:
Object o = 0;
o = "Hello";
Von dem, was ich zu C im Zusammenhang finden kann ++, gibt es keine object
Typ oder "dynamisches" Objekt bei diesem.
Der Grund, warum ich diese brauchen, ist Ich versuche, ein Objekt, das in einer der folgenden Arten nimmt zu erstellen: int
, float
, char
, string
, bool
, und mir erlauben, Operationen zu tun, wie zum Beispiel:
object o = 0; // currently an int
o -= 2.5; // now a float
o += "Test"; // now a string
Gibt es eine Standardfunktionalität für diese Art von Variable? Wenn nicht, kann es mit Makros gemacht werden, struct
's, etc.?
Ich habe Dinge wie diese gefunden:
template <typename name>
aber haben keine Ahnung, wie es zu benutzen.
C++ 17 wird 'std :: any' haben, was genau das ist, was Sie wollen. Jetzt können Sie 'boost :: any' verwenden oder Ihre eigene Implementierung ausführen.Dies ist jedoch nicht dynamisch. – user2296177
@ user2296177 Ich arbeite mit C++ 11 und hoffe (aber ich bin glücklich, den Support fallen zu lassen, wenn es nicht möglich ist), Abwärtskompatibilität zu haben. Ich bin nutzlos mit C++, kannst du mir bitte ein Beispiel geben? Ich habe keine Ahnung, wo ich anfangen soll ... – finnrayment
Sie können immer eine Klasse erstellen, die Vektoren aller Typen enthält, die Sie unterstützen möchten, und dann eine Schnittstelle hinzufügen. Aber das scheint auf den ersten Blick eine sehr schlechte Idee in Bezug auf Wartbarkeit und Lesbarkeit zu sein. Ich würde darüber nachdenken, so etwas sehr schwer umzusetzen und eine völlig andere Lösung zu finden. – mirosval