Heim >Backend-Entwicklung >C++ >Wie kann ich eine Basisklassenvererbung in C-Enum-Klassen erreichen?

Wie kann ich eine Basisklassenvererbung in C-Enum-Klassen erreichen?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 20:20:021114Durchsuche

How Can I Achieve Base Class Inheritance in C   Enum Classes?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn