Überladen Sie den Darsteller zwischen zwei Enums

8

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:

%Vor%

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)

    
DanS 05.09.2011, 18:14
quelle

1 Antwort

13

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%     
Brent M. Spell 05.09.2011, 18:25
quelle

Tags und Links