Eingabe vom Stream zum Enum-Typ

8

Wie kann ich vom Stream zum Enum-Typ eingeben?

Ich kann es so machen

%Vor%

Sonst?

    
Dmitry 12.04.2011, 10:28
quelle

3 Antworten

13
%Vor%

Wenn Sie sicherstellen möchten, dass der Wert gültig ist, können Sie Folgendes tun:

%Vor%     
Erik 12.04.2011, 10:31
quelle
3

Diese Frage wurde hier in einer allgemeineren Form gestellt: Wie man enums aus einem std :: iStream generisch liest . Das OP hatte fast eine funktionierende Lösung wie es war; Er hatte nur Probleme mit const und ein paar unnötigen Winkeln. Hier ist die Arbeitslösung konkretisiert:

%Vor%

Die Funktionsvorlage read_enum erfüllt denselben Zweck wie std::make_pair oder std::make_shared in der Standardbibliothek: Sie erlaubt uns, auf die spitzen Klammern zu verzichten. Sie könnten genauso gut in >> EnumReader<enSide>(val.mSide) >> EnumReader<enType>(val.mType) schreiben, aber das ist mehr Tipparbeit (Wortspiel beabsichtigt).

Die Standardbibliotheken einiger Anbieter fehlen angeblich noch std::underlying_type von ihren <type_traits> -Köpfen. Wenn Sie eine dieser unvollständigen Bibliotheken haben, können Sie eine der in Wie kann man den zugrunde liegenden Typ der Klassenaufzählung erkennen? .

    
Quuxplusone 26.01.2014 07:05
quelle
0

Das ist nicht schön, aber sollte es tun

%Vor%

Prost, CC

    
Catriel 06.06.2017 18:04
quelle

Tags und Links