Heim > Artikel > Backend-Entwicklung > Wie kann ich eine Basisklassenvererbung in C-Enum-Klassen erreichen?
Basisklassenvererbung in Enum-Klassen
In C sind Enumerationen ein Aufzählungstyp, der eine Menge benannter Werte darstellt, die Ganzzahlen zugeordnet sind . Während Aufzählungen zur Darstellung von Konstanten praktisch sein können, kann es Situationen geben, in denen Sie von einer vorhandenen Aufzählung erben müssen, um eine neue zu erstellen.
Der in der Frage bereitgestellte Codeausschnitt zeigt einen Versuch, von einer Aufzählung zu erben ( eBase) zu einem anderen (eDerived), aber dies wird in C nicht direkt unterstützt. Aufzählungen sind keine Klassen und können daher nicht im herkömmlichen Sinne vererbt werden.
Es gibt jedoch einen Workaround, um eine ähnliche Funktionalität zu erreichen. Durch die Definition einer zugrunde liegenden Klasse, die die Enum-Konstanten darstellt, können wir von dieser Klasse erben, um einen neuen Enum-Typ zu erstellen:
<code class="cpp">enum class Enum : int { public: EnumValue One = 1, EnumValue Two, EnumValue Last }; enum class EnumDerived : int { public: EnumValue Three = Enum::Last, EnumValue Four, EnumValue Five };</code>
In diesem Beispiel stellt die Enum-Klasse die Basisenum dar und die EnumDerived-Klasse erbt davon. Die EnumValue-Werte stellen die einzelnen Enum-Konstanten dar.
Um auf die Werte in der geerbten Enumeration zuzugreifen, verwenden wir den vollständig qualifizierten Namen, wie im folgenden Code gezeigt:
<code class="cpp">int main() { std::cout << EnumDerived::EnumValueOne << std::endl; std::cout << EnumDerived::EnumValueFour << std::endl; }</code>
Indem wir dies nutzen Mit diesem Ansatz können wir eine Basisklassenvererbung in Enum-Klassen in C erreichen und so eine Möglichkeit bieten, bestehende Enums zu erweitern und neue mit zusätzlichen Werten zu erstellen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Basisklassenvererbung in C-Enum-Klassen erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!