Heim > Backend-Entwicklung > C++ > Wie kann man eine Mitgliedsfunktion einer Klassenvorlage explizit spezialisieren?

Wie kann man eine Mitgliedsfunktion einer Klassenvorlage explizit spezialisieren?

Barbara Streisand
Freigeben: 2024-12-07 15:13:11
Original
934 Leute haben es durchsucht

How to Explicitly Specialize a Member Function of a Class Template?

Explizite Spezialisierung einer Mitgliedsfunktion für eine Klassenvorlage

Problemstellung:

Wann Beim Definieren einer expliziten Spezialisierung einer Mitgliedsfunktion für eine Klassenvorlage muss man auch die umgebende Klassenvorlage explizit spezialisieren, um den Compiler zu vermeiden Fehler.

Codebeispiel:

Beachten Sie den folgenden Codeausschnitt:

template <class C> class X
{
public:
   template <class T> void get_as();
};

template <class C>
void X<C>::get_as<double>()
{
}

int main()
{
   X<int> x;
   x.get_as();
}
Nach dem Login kopieren

Dieser Code löst Compilerfehler aus, da die umgebende Klassenvorlage X vorhanden ist nicht explizit spezialisiert.

Lösung:

Zu Um dieses Problem zu lösen, müssen wir die umgebende Klassenvorlage explizit spezialisieren, wie unten gezeigt:

template <> template <>
void X<int>::get_as<double>()
{
}
Nach dem Login kopieren

Diese spezialisierte Memberfunktion gilt nur für X und nicht auf andere Instanziierungen von >

Diese Methode ermöglicht eine explizite Spezialisierung, ohne dass die umgebende Klassenvorlage spezialisiert werden muss.

Das obige ist der detaillierte Inhalt vonWie kann man eine Mitgliedsfunktion einer Klassenvorlage explizit spezialisieren?. 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