Self in C: Die autonome Implementierung
Das Schlüsselwort self, das in Sprachen wie PHP weit verbreitet ist, stellt in C eine Herausforderung dar Fehlen eines gleichwertigen Mechanismus. Während eine klassenspezifische Implementierung mit verschachtelten Typedefs unkompliziert ist, erfordert sie Duplizierung und birgt das Risiko, dass subtile Fehler entstehen. In diesem Artikel wird eine elegante Lösung unter Verwendung von decltype und Vorlagen untersucht, um eine autonome Selbstimplementierung zu erreichen.
Selbst mit decltype deklarieren
Der erste Versuch, sich selbst mithilfe von decltype einzuführen, schlägt fehl, weil dies der Fall ist versucht, außerhalb einer Instanz darauf zuzugreifen. Um dieses Problem zu lösen, müssen wir die Selbstdeklaration in einer Vorlage kapseln:
template <typename X, typename...Ts> class SelfBase<X,Ts...>: public Ts... { protected: typedef X self; };
Diese Vorlage dient als Basisklasse für Typen, die auf self zugreifen können.
Komfortmakros
Um die Nutzung von SelfBase zu vereinfachen, stehen zwei Makros zur Verfügung eingeführt:
Durch die Nutzung von Decltype und Templates ist es möglich, ein autonomes Selbst zu implementieren Mitgliedstyp in C . Dieser Ansatz ermöglicht die Verwendung von self innerhalb von Klassen ohne das Risiko stiller Fehler aufgrund fehlerhafter Klassenneudefinition. Die bereitgestellten praktischen Makros machen die Implementierung einfach und flexibel und ermöglichen die Vererbung mehrerer Basisklassen und verschiedene Kombinationen von Selbst- und regulären Basisklassen.
Das obige ist der detaillierte Inhalt vonWie können wir ein autonomes „Selbst'-Schlüsselwort in C implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!