Traitement des énumérations comme indicateurs
En C#, l'attribut [Flags] permet aux énumérations de être traités comme des indicateurs, ce qui rend pratiques les opérations telles que les OU au niveau du bit et l'affectation de type sécurisé. Cependant, en C , cette fonctionnalité n'est pas intrinsèquement prise en charge.
Création d'indicateurs d'énumération
Pour créer des indicateurs d'énumération en C, une méthode consiste à définir des opérateurs de bits pour l'énumération manuellement. Cela implique la création d'opérateurs tels que OR au niveau du bit, AND au niveau du bit, etc., qui convertissent les valeurs d'énumération en nombres entiers, effectuent l'opération, puis les reconvertissent en type d'énumération.
Surcharge d'opérateurs personnalisés
Un exemple de surcharge d'opérateur personnalisé pour les indicateurs d'énumération est :
enum AnimalFlags { HasClaws = 1, CanFly = 2, EatsFish = 4, Endangered = 8 }; inline AnimalFlags operator|(AnimalFlags a, AnimalFlags b) { return static_cast<AnimalFlags>(static_cast<int>(a) | static_cast<int>(b)); }
Cela permet des opérations OU au niveau du bit sur l'énumération AnimalFlags, émulant essentiellement le comportement de l'attribut [Flags] de C#.
Sécurité des types
Pour appliquer la sécurité des types et empêcher les affectations non valides comme seahawk.flags = HasMaximizeButton , envisagez d'utiliser une classe wrapper basée sur un modèle ou d'autres techniques pour garantir que seules des valeurs d'énumération valides sont attribuées à la variable flag.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!