Heim  >  Artikel  >  Backend-Entwicklung  >  Können stark typisierte Aufzählungen in C automatisch in Ganzzahlen konvertiert werden?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 22:30:03832Durchsuche

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>

Mit dieser Vorlagenfunktion kann die Konvertierung wie folgt erreicht werden:

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

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!

Stellungnahme:
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