Heim > Backend-Entwicklung > C++ > Wie konvertiere ich stark typisierte Enums in Ganzzahlen in C?

Wie konvertiere ich stark typisierte Enums in Ganzzahlen in C?

Mary-Kate Olsen
Freigeben: 2024-11-08 20:48:02
Original
518 Leute haben es durchsucht

How to Convert Strongly Typed Enums to Integers in C  ?

Implizite Konvertierung von stark typisierten Aufzählungen in Int

In C sind stark typisierte Aufzählungen eine relativ neue Funktion, die im Vergleich zu herkömmlichen Aufzählungen mehr Sicherheit bietet Aufzählungen. Ein Unterschied zwischen diesen Typen besteht darin, dass stark typisierte Aufzählungen nicht implizit in Ganzzahlen konvertiert werden können. Dieses Verhalten ist beabsichtigt, um unbeabsichtigte Konvertierungen zu verhindern.

In bestimmten Szenarien müssen Sie jedoch möglicherweise einen stark typisierten Enum-Wert in eine Ganzzahl konvertieren. In diesen Fällen können Sie den Operator static_cast verwenden. Sie müssen jedoch den zugrunde liegenden Ganzzahltyp in der Umwandlung explizit angeben.

<code class="cpp">enum class b { B1, B2 };

int foo(int input) { return input; }

int main(void) {
  int value = static_cast<int>(b::B2); // Explicit cast required
  std::cout << foo(value) << std::endl;
}
Nach dem Login kopieren

Wenn Sie den zugrunde liegenden Typ nicht explizit angeben möchten, können Sie eine Vorlagenfunktion wie diese verwenden:

<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);
}

int main(void) {
  std::cout << foo(to_underlying(b::B2)) << std::endl; // No explicit cast needed
}</code>
Nach dem Login kopieren

Durch die Verwendung dieser Vorlagenfunktion müssen Sie nicht jedes Mal den zugrunde liegenden Typ angeben, wenn Sie einen stark typisierten Enum-Wert in eine Ganzzahl konvertieren müssen. Es bietet eine prägnantere und wiederverwendbarere Lösung.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich stark typisierte Enums 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