Implémentation d'un type de membre autonome autonome en C avec des macros de modèle
En C, simuler la fonctionnalité du mot-clé self de PHP pose des défis uniques. Bien qu'il soit possible de créer une implémentation spécifique à une classe à l'aide d'un alias de type personnalisé, cette approche nécessite de spécifier à plusieurs reprises le type de classe, ce qui laisse place à des erreurs potentielles. Pour résoudre ce problème, une solution plus complète est nécessaire.
Heureusement, en utilisant une combinaison de macros de modèles et de modèles variadiques, nous pouvons parvenir à une implémentation autonome de soi. Voici comment cela fonctionne :
template <typename X, typename...Ts> class Self : public Ts... { protected: typedef X self; };
#define WITH_SELF(X) X : public Self<X> #define WITH_SELF_DERIVED(X,...) X : public Self<X,__VA_ARGS__>
class WITH_SELF(Foo) { void test() { self foo; } };
class WITH_SELF_DERIVED(Bar, Foo, Foo2) { /* ... */ };
Cette approche offre un moyen autonome et flexible d'implémenter l'équivalent du mot-clé self de PHP en C , éliminant le besoin de réplication manuelle des classes et réduisant le risque de bogues silencieux.
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!