Heim > Backend-Entwicklung > C++ > Hauptteil

Wie konvertiere ich stark typisierte Enums explizit in Ganzzahlen in C?

Linda Hamilton
Freigeben: 2024-11-04 12:55:02
Original
578 Leute haben es durchsucht

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

Automatisches Konvertieren einer stark typisierten Aufzählung in einen Ganzzahltyp

In C gewährleisten stark typisierte Aufzählungen eine größere 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, wie zum Beispiel:

<code class="cpp">int i = static_cast<int>(b::B2);</code>
Nach dem Login kopieren

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

<code class="cpp">template <typename E>
constexpr typename std::underlying_type<E>::type to_underlying(E e) noexcept {
    return static_cast<typename std::underlying_type<E>::type>(e);
}</code>
Nach dem Login kopieren

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

<code class="cpp">std::cout << foo(to_underlying(b::B2)) << std::endl;</code>
Nach dem Login kopieren

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

Das obige ist der detaillierte Inhalt vonWie konvertiere ich stark typisierte Enums explizit in Ganzzahlen in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!