Heim >Backend-Entwicklung >C++ >Wie definiere und initialisiere ich statische Datenelemente in C-Klassenvorlagen?

Wie definiere und initialisiere ich statische Datenelemente in C-Klassenvorlagen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-02 08:36:14460Durchsuche

How to Define and Initialize Static Data Members in C   Class Templates?

Statisches Datenelement in einer Klassenvorlage definieren

Häufig besteht die Notwendigkeit, ein statisches Datenelement innerhalb einer Klassenvorlage zu definieren. Der herkömmliche Ansatz, das Mitglied innerhalb der Klassendeklaration zu definieren, ist jedoch nicht möglich, da es aufgrund nicht-integraler Datentypen außerhalb der Klassendefinition initialisiert werden muss. Dies stellt eine Herausforderung dar, insbesondere wenn es sich bei der Klasse um eine Vorlage handelt, da die Definition nicht in einer separaten kompilierten Datei platziert werden kann.

Um dieses Problem zu lösen, besteht eine Technik darin, das statische Datenelement in der Header-Datei zu definieren, aber zu initialisieren es außerhalb in einer separaten Definition. Hier ist ein Beispiel:

template <typename T>
struct S
{
    static double something_relevant;
};

template <typename T>
double S<T>::something_relevant = 1.5;

Bei diesem Ansatz wird das statische Datenelement Something_relevant zunächst in der Klassenvorlagendefinition deklariert. Anschließend erfolgt die Initialisierung außerhalb einer separaten Definition, wobei es sich um einen beliebigen nicht-integralen Datentyp handeln kann. Da die Definition Teil der Vorlage ist, stellt der Compiler sicher, dass sie nur einmal definiert wird, wodurch mehrere Definitionen vermieden werden.

Das obige ist der detaillierte Inhalt vonWie definiere und initialisiere ich statische Datenelemente in C-Klassenvorlagen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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