„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie konvertiere ich stark typisierte Aufzählungen explizit in Ganzzahlen in C++?

Wie konvertiere ich stark typisierte Aufzählungen explizit in Ganzzahlen in C++?

Veröffentlicht am 20.11.2024
Durchsuche:382

How to Explicitly Convert Strongly Typed Enums to Integers in C  ?

Automatisches Konvertieren einer stark typisierten Aufzählung in einen ganzzahligen Typ

In C gewährleisten stark typisierte Aufzählungen eine höhere Typsicherheit als herkömmliche Aufzählungen. Im Gegensatz zu herkömmlichen Aufzählungen können stark typisierte Aufzählungen jedoch nicht implizit in Ganzzahltypen konvertiert werden.

Um einen stark typisierten Aufzählungswert E in einen Ganzzahltyp umzuwandeln, ist eine explizite Umwandlung erforderlich, z. B.:

int i = static_cast(b::B2);

Wenn jedoch der zugrunde liegende Typ der Aufzählung unbekannt ist, kann die folgende Vorlagenfunktion verwendet werden:

template 
constexpr typename std::underlying_type::type to_underlying(E e) noexcept {
    return static_cast::type>(e);
}

Jetzt kann die Konvertierung durchgeführt werden, ohne den zugrunde liegenden Typ explizit anzugeben:

std::cout 

Es ist wichtig zu beachten, dass diese Konvertierung nur für Werte stark typisierter Aufzählungen funktioniert. Wenn to_underlying() ein herkömmlicher Enum-Wert bereitgestellt wird, wird ein Fehler ausgelöst.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3