Home > Backend Development > C++ > body text

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

Susan Sarandon
Release: 2024-10-30 20:20:02
Original
950 people have browsed it

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

Base Class Inheritance in Enum Classes

In C , enums are an enumeration type that represents a set of named values that are associated with integers. While enums can be convenient for representing constants, there may be situations where you need to inherit from an existing enum to create a new one.

The code snippet provided in the question demonstrates an attempt to inherit from one enum (eBase) to another (eDerived), but this is not supported in C directly. Enums are not classes, and therefore they cannot be inherited in the traditional sense.

However, there is a workaround to achieve similar functionality. By defining an underlying class that represents the enum constants, we can inherit from this class to create a new enum type:

<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>
Copy after login

In this example, the Enum class represents the base enum, and the EnumDerived class inherits from it. The EnumValue values represent the individual enum constants.

To access the values in the inherited enum, we use the fully qualified name, as shown in the following code:

<code class="cpp">int main()
{
    std::cout << EnumDerived::EnumValueOne << std::endl;
    std::cout << EnumDerived::EnumValueFour << std::endl;
}</code>
Copy after login

By utilizing this approach, we can achieve base class inheritance in enum classes in C , providing a way to extend existing enums and create new ones with additional values.

The above is the detailed content of How Can I Achieve Base Class Inheritance in C Enum Classes?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!