interface + coreinterface + enum
-
Situation:
ein Interface kapselt alle Core-Funktionen, und bietet ein enum.
z.B.enum language { CORE_ENGLISH, CORE_GERMAN, CORE_FRENCH, CORE_LAST }ein layer höher gibt es ein anderes Interface, da man direkt Zugriff auf coreinterface hat, kann man einfach language-enum benutzen, bzw nach noch höherer Ebene weiterleiten. Blödweiser 1. language enum hat ein CORE präfix, 2. ich möchte noch was hinzufügen, z.B. CORE_ENGLISH, "english"; CORE_GERMAN, "german", das kann man machen, in dem man nochmal im interface enum definieren,
zwar 1 zu 1 kopieren (ohne CORE_ als Präfix), was ich ziemlich hässlich fand.
Falls man was im Coreinterface ändert, muss man auch im Interface ändern.
Habt ihr eine bessere Methode?
-
netrobot schrieb:
1. language enum hat ein CORE präfix
Um das wegzubekommen, müsstest du einen eigenen enum verwenden (oder ein Paket Variablen/Konstanten vom Typ language)
const language ENGLISH = CORE_ENGLISH; const language GERMAN = CORE_GERMAN; ...2. ich möchte noch was hinzufügen, z.B. CORE_ENGLISH, "english"; CORE_GERMAN, "german"
Ich fürchte, wenn du Strings mit den einzelnen Werten verbinden willst, übersteigst du die Grenzen eines enum deutlich. Dafür benötigst du ein Array (oder besser einen STL-Container), das jedem language-Wert einen String zuweist.
-
[quote="CStoll"]
netrobot schrieb:
1. language enum hat ein CORE präfix
Um das wegzubekommen, müsstest du einen eigenen enum verwenden (oder ein Paket Variablen/Konstanten vom Typ language)
const language ENGLISH = CORE_ENGLISH; const language GERMAN = CORE_GERMAN; ...d.h. ich muss quasi den Inhalt nochmal definiere mit const im interface, was ich eigentlich vermeiden wollte, ich habe 40 languages, dann insg. muss ich 80mal definiere jeweils mit enum im Coreinterface und const im interface