Im Bereich C stoßen Sie möglicherweise auf ein Szenario, in dem Sie ein statisches Datenmitglied für eine Vorlagenklasse definieren möchten. aber nicht-integrale Datentypen stellen eine Herausforderung dar. Dieser Artikel befasst sich mit einer Lösung, die es Ihnen ermöglicht, statische Mitglieder unabhängig von ihrem Typ zu deklarieren und gleichzeitig sicherzustellen, dass sie im kompilierten Code vorhanden sind.
Beachten Sie den folgenden Codeausschnitt:
template <typename T> struct S { ... static double something_relevant = 1.5; };
Während Sie Mir ist aufgefallen, dass der Compiler einen Fehler auslöst, da „something_relevant“ kein integraler Datentyp ist. Das Problem ergibt sich aus der Tatsache, dass Vorlagen bei der Verwendung instanziiert werden, und da es sich bei S um eine Vorlage handelt, können Sie deren Mitglieder nicht in einer kompilierten Datei definieren.
Um dieses Hindernis zu überwinden, können Sie auf die Definition des statischen Mitglieds zurückgreifen die Header-Datei selbst, wie unten gezeigt:
template <typename T> struct S { static double something_relevant; }; template <typename T> double S<T>::something_relevant = 1.5;
Durch die Definition des statischen Mitglieds in der Header-Datei stellen Sie sicher, dass es außerhalb der Klasse definiert ist und Kompilierungsfehler vermieden werden. Da es außerdem in der Vorlage enthalten ist, verarbeitet der Compiler alle potenziellen Mehrfachdefinitionen und gewährleistet so eine saubere Instanziierung. Mit dieser Technik können Sie statische Mitglieder unabhängig von ihrem Datentyp in Klassenvorlagen beibehalten und garantieren, dass sie im endgültigen kompilierten Code vorhanden sind.
Das obige ist der detaillierte Inhalt vonWie kann ich statische Klassenmitglieder (einschließlich nicht ganzzahliger Typen) in C-Klassenvorlagen beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!