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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-03 15:25:10547Durchsuche

How to Declare Non-Integral Static Data Members in C   Class Templates?

Statische Datenelemente in Klassenvorlagen deklarieren

Bei der objektorientierten Programmierung ist es häufig erforderlich, statische Datenelemente innerhalb von Klassenvorlagen zu deklarieren. Dies kann aufgrund der inhärenten nichtintegralen Natur solcher Datenelemente eine Herausforderung darstellen. Eine Möglichkeit, diese Einschränkung zu überwinden, besteht darin, die Deklarations- und Definitionsanweisungen zu trennen.

Betrachten Sie den folgenden Beispielcode:

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

Diese Deklaration erstellt ein statisches Datenelement mit dem Namen „something_relevant“ innerhalb der Klasse Vorlage „S“. Da es sich jedoch nicht um einen Integraltyp handelt, akzeptiert der Compiler diese Deklaration nicht.

Um dieses Problem zu beheben, kann die Definition von „something_relevant“ in einer separaten Anweisung platziert werden:

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

Durch die Definition des statischen Datenelements außerhalb der Klassendeklaration kann der Compiler sicherstellen, dass die Definition nur einmal ausgewertet wird, unabhängig davon, wie viele Instanzen der Klassenvorlage erstellt werden.

Dies Die Technik ermöglicht die Erstellung statischer Datenelemente innerhalb von Klassenvorlagen, auch wenn diese nicht vom integralen Typ sind. Es stellt außerdem sicher, dass das statische Datenelement mit dem richtigen Wert initialisiert wird.

Das obige ist der detaillierte Inhalt vonWie deklariere 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