by Anonymous » 12 Feb 2025, 03:40
Seit C ++ 11 hatten wir die Möglichkeit, Scoped -Aufzählungen mit beiden zu verwenden: < /p>
Code: Select all
enum struct MyScopedEnum
{
True = 1,
False = 0
};
< /code>
oder < /p>
enum class MyScopedEnum
{
True = 1,
False = 0
};
Im Gegensatz zu regulärer Klasse und struct , wobei die Mitglieder standardmäßig für die Klasse und standardmäßig für Struct standardmäßig privat sind. Scoped Enum machen ihre Enzerratoren öffentlich, unabhängig davon, ob wir Enumsklasse oder Enum struct verwenden,
Dies scheint die festgelegte Konvention zu brechen, die die Klasse impliziert Strengere Zugriffskontrolle als struktur . Angesichts der Tatsache, dass Scoped Enums keine expliziten Zugriffsspezifizierer zulassen (d. H. Öffentlich: in ihnen ist ungültig), was ist die Gründe für die öffentliche Veröffentlichung der Enzeratoren standardmäßig, anstatt der festgelegten Klasse und struktur Verhalten? In einigen Frameworks/Motoren (z. B. Unreal Engine) sind nur global deklarierte Enums dem Editor/Skript ausgesetzt. In diesen Fällen wäre es großartig, den Enum -Zugang einzuschränken.
Seit C ++ 11 hatten wir die Möglichkeit, Scoped -Aufzählungen mit beiden zu verwenden: < /p>
[code]enum struct MyScopedEnum
{
True = 1,
False = 0
};
< /code>
oder < /p>
enum class MyScopedEnum
{
True = 1,
False = 0
};
[/code]
Im Gegensatz zu regulärer Klasse und struct , wobei die Mitglieder standardmäßig für die Klasse und standardmäßig für Struct standardmäßig privat sind. Scoped Enum machen ihre Enzerratoren öffentlich, unabhängig davon, ob wir Enumsklasse oder Enum struct verwenden,
Dies scheint die festgelegte Konvention zu brechen, die die Klasse impliziert Strengere Zugriffskontrolle als struktur . Angesichts der Tatsache, dass Scoped Enums keine expliziten Zugriffsspezifizierer zulassen (d. H. Öffentlich: in ihnen ist ungültig), was ist die Gründe für die öffentliche Veröffentlichung der Enzeratoren standardmäßig, anstatt der festgelegten Klasse und struktur Verhalten? In einigen Frameworks/Motoren (z. B. Unreal Engine) sind nur global deklarierte Enums dem Editor/Skript ausgesetzt. In diesen Fällen wäre es großartig, den Enum -Zugang einzuschränken.