Implementieren eines autonomen Self-Member-Typs in C mit Vorlagenmakros
In C stellt die Simulation der Funktionalität des PHP-Schlüsselworts self einzigartige Herausforderungen dar. Es ist zwar möglich, mithilfe eines benutzerdefinierten Typalias eine klassenspezifische Implementierung zu erstellen, dieser Ansatz erfordert jedoch die wiederholte Angabe des Klassentyps, was Raum für potenzielle Fehler lässt. Um dieses Problem anzugehen, ist eine umfassendere Lösung erforderlich.
Glücklicherweise können wir mit einer Kombination aus Vorlagenmakros und variadischen Vorlagen eine autonome Implementierung des Selbst erreichen. So funktioniert es:
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) { /* ... */ };
Dieser Ansatz bietet eine autonome und flexible Möglichkeit, das Äquivalent des PHP-Schlüsselworts self in C zu implementieren, wodurch die Notwendigkeit einer manuellen Klassenreplikation entfällt und die Wahrscheinlichkeit stiller Fehler verringert wird.
Das obige ist der detaillierte Inhalt vonWie können C-Vorlagenmakros das PHP-Schlüsselwort „self' für die autonome Selbstreferenzierung simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!