Heim > Backend-Entwicklung > C++ > Wie kann ich statische Klassenmitglieder (einschließlich nicht ganzzahliger Typen) in C-Klassenvorlagen beibehalten?

Wie kann ich statische Klassenmitglieder (einschließlich nicht ganzzahliger Typen) in C-Klassenvorlagen beibehalten?

Susan Sarandon
Freigeben: 2024-12-10 08:46:13
Original
810 Leute haben es durchsucht

How Can I Preserve Static Class Members (Including Non-Integral Types) in C   Class Templates?

Statische Klassenmitglieder in Klassenvorlagen beibehalten

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;
};
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage