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.
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