Ich würde mich freuen, zu erfahren, wie man mit boost :: variant in "zweidimensionaler Manier" umgeht. Klingt komisch, aber lassen Sie meinen Code mehr (hoffentlich) sagen:
Ich habe eine Klasse namens Parameter:
programmiert %Vor%Beispiel Verwendung meines Parameters wie oben definiert:
%Vor% Wie ich oben anhand des Beispiels erklären wollte, kann ich mehrere Parametertypen mit boost::units::si::???
und einem anderen Datentyp wie double, short, int
etc.
Mein ZIEL besteht darin, einen std::map
-Container zu erstellen, der Instanzen eines beliebigen Typs Parameter
(wie oben abgetastet) speichern kann.
Deshalb habe ich erklärt:
%Vor% Das funktioniert ziemlich gut, aber ich habe einen großen Nachteil, den ich gerne lösen würde - ich muss jede einzelne Kombination von Parametertypen definieren, die ich in SupportedParameterTypes
type wie oben definiert unterstützen möchte.
Meine Idee war, boost :: mpl :: vector zu definieren, das alle Parametertypen enthält, die ich unterstützen möchte:
%Vor%Und alle möglichen Datentypen werden unterstützt:
%Vor%Da kommen meine Probleme:
%Vor% Aber boost::variant
von etwas ( Parameter
) zu definieren, das von einem anderen boost::variant
definiert wird, scheint nicht zu funktionieren: o (
FRAGE : Wie definiere ich std::map
container, der alle meine Parameter
-Typen enthält, die in den entsprechenden boost::mpl::vector
s definiert sind?
Ich würde Sie gerne um Hilfe bei der Lösung dieses Problems bitten. Vielleicht ist es keine gute Idee / Prinzip überhaupt, es zu kodieren, wie ich schrieb, wer weiß. Mein Ziel ist es, durch std :: map einen flexiblen Speicher zu haben, um alle meine Parameter zu halten, ohne dass mein Code mehrdeutig ist. Auf der Suche nach cleverer Lösung natürlich: o)
Vielen Dank im Voraus für eine Antwort auf meine Frage / Bitte um Hilfe
Tags und Links c++ c++11 boost boost-mpl boost-variant