Gibt es eine Möglichkeit, einen Umsetzungsoperator zu überladen, um zwischen zwei Enums zu konvertieren?
In meinem Code habe ich
%Vor%wobei NOT_OPERATING und INITIALISING auf NICHT VERFÜGBAR abbilden; DEGRADED und NORMAL Karte direkt über. Diese werden durch externe Schnittstellen behoben.
Ich suche nach einer Möglichkeit, zwischen devStatus
und dataStatus
zu konvertieren und möchte etwas schreiben können wie:
Ich weiß, wenn das Klassen wären, könnte ich devStatus::operator dataStatus()
schreiben, um das zu tun. Gibt es eine Möglichkeit, dies für ein enums zu tun?
Ich könnte einfach eine freie Funktion haben
dataStatus devStatus2dataStatus(const devStatus& desSts)
In C ++ können Konvertierungsoperatoren nur innerhalb von Klassen-, Struktur- und Union-Deklarationen deklariert werden. Sie können nicht außerhalb des Typs deklariert werden (wie zum Beispiel operator +). Enum-Typ-Deklarationen unterstützen keine Instanz-Member, daher müssen Sie mit der Konvertierungsfunktion gehen. Dadurch wird auch der aufrufende Code klarer. Das folgende Beispiel demonstriert dies, indem benutzerdefinierte Namespaces verwendet werden, um die Aufzählungen und Konvertierungsfunktionen zu definieren:
%Vor%