Heim >Backend-Entwicklung >C++ >Wie definiere ich nicht-integrale statische Datenelemente in C-Klassenvorlagen?

Wie definiere ich nicht-integrale statische Datenelemente in C-Klassenvorlagen?

DDD
DDDOriginal
2024-12-01 18:46:12130Durchsuche

How Do I Define Non-Integral Static Data Members in C   Class Templates?

Statische Datenelemente in Klassenvorlagen definieren

Bei der Arbeit mit Klassenvorlagen kann es sein, dass Sie auf die Herausforderung stoßen, statische Datenelemente zu deklarieren, die es nicht sind vom integralen Typ. Dies tritt auf, wenn Sie Code haben, der davon abhängt, dass ein statisches Datenelement in der Klassenvorlage vorhanden ist, aber nicht durch seinen Vorlagenparameter bestimmt wird.

Eine Lösung für dieses Problem besteht darin, das statische Datenelement in der Header-Datei zu definieren wo die Klassenvorlage deklariert ist. Dadurch wird sichergestellt, dass das Mitglied außerhalb der Vorlagenklassendefinition deklariert wird, sodass es separat initialisiert werden kann.

Beispielsweise unter Berücksichtigung der folgenden Klassenvorlage:

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

Wir können die Statik definieren Datenelement Something_relevant in derselben Header-Datei wie folgt:

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

Dieser Ansatz isoliert die Definition des statischen Datenelements von der Klassenvorlage, sodass Sie es initialisieren können unabhängig. Da es Teil einer Vorlage ist, stellt der Compiler außerdem sicher, dass es nur einmal definiert wird, wodurch Mehrfachdefinitionen vermieden werden.

Das obige ist der detaillierte Inhalt vonWie definiere ich nicht-integrale 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