Heim > Backend-Entwicklung > C++ > Hauptteil

Können stark typisierte Aufzählungen in C automatisch in Ganzzahlen konvertiert werden?

Mary-Kate Olsen
Freigeben: 2024-11-03 22:30:03
Original
901 Leute haben es durchsucht

Can Strongly Typed Enums Be Automatically Converted to Integers in C  ?

Automatisieren der Konvertierung stark typisierter Enums in Ganzzahlen

In C gibt es Enums in zwei Varianten: stark typisierte Enums und reguläre Enums. Reguläre Aufzählungen können implizit in Ganzzahlen konvertiert werden, während stark typisierte Aufzählungen eine explizite Umwandlung erfordern. Dies wirft die Frage auf: Gibt es eine automatisierte Möglichkeit, stark typisierte Aufzählungen in Ganzzahlen umzuwandeln, ohne auf explizite Umwandlungen zurückzugreifen?

Die Antwort ist nein, und das ist beabsichtigt. Stark typisierte Aufzählungen sollen die implizite Konvertierung in Ganzzahlen verhindern. Im Wesentlichen stellt der Compiler sicher, dass Sie die Konvertierung von einem Aufzählungswert in eine Ganzzahl explizit bestätigen.

Es gibt jedoch eine Problemumgehung, um die Angabe des zugrunde liegenden Typs in der Umwandlung zu vermeiden. Durch die Verwendung einer Vorlagenfunktion können wir die Typspezifikation der Besetzung abstrahieren.

<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

Mit dieser Vorlagenfunktion kann die Konvertierung wie folgt erreicht werden:

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

Dieser Ansatz eliminiert die explizite Typspezifikation in der Besetzung, wodurch der Konvertierungsprozess vereinfacht und gleichzeitig das gewünschte Verhalten der erzwungenen expliziten Konvertierung für stark typisierte Aufzählungen beibehalten wird.

Das obige ist der detaillierte Inhalt vonKönnen stark typisierte Aufzählungen in C automatisch in Ganzzahlen konvertiert werden?. 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