Heim > Backend-Entwicklung > C++ > Wann und warum benötigen Sie das Schlüsselwort „typename' in C-Vorlagen?

Wann und warum benötigen Sie das Schlüsselwort „typename' in C-Vorlagen?

Susan Sarandon
Freigeben: 2024-12-19 03:46:11
Original
260 Leute haben es durchsucht

When and Why Do You Need the

Syntax für das Schlüsselwort „typename“

Das Schlüsselwort „typename“ wird in C verwendet, wenn auf einen verschachtelten Namen verwiesen wird, der ein abhängiger Name ist , was bedeutet, dass es in einer Vorlageninstanz mit einem unbekannten Parameter verschachtelt ist. Dieses Schlüsselwort gibt explizit an, dass der Name einen Typ darstellt, insbesondere wenn die abgeleitete Entität (Wert, Typ oder Vorlage) mehrdeutig ist.

Verwendung von „Typname“ in verschachtelten Namen

Bedenken Sie den folgenden Codeausschnitt:

template<class K>
class C {
    struct P {};
    vector<P> vec;
    void f();
};

template<class K> 
void C<K>::f() {
    typename vector<P>::iterator p = vec.begin();
}
Nach dem Login kopieren

Hier ist das Schlüsselwort „typename“ erforderlich, um p zu deklarieren als Typ, nämlich ein Iterator für einen Vektor von P Strukturen. Ohne „typename“ würde der Compiler den Sequenzvektor

::iterator als einen Ausdruck interpretieren, der einen Wert oder eine Funktion darstellt, was falsch wäre.

Zusätzliche Fälle, in denen „typename“ erforderlich ist

Neben verschachtelten Namen ist im Folgenden auch das Schlüsselwort „typename“ erforderlich Szenarien:

  • Beim Verweis auf den Typ eines Vorlagenarguments
  • Beim Deklarieren der Mitgliedsfunktion einer Vorlagenklasse als Freund einer anderen Vorlagenklasse
  • Beim Angeben der Typ eines Vorlagenparameterpakets
  • Beim Umwandeln eines abhängigen Namens in einen bestimmten Typ

Das obige ist der detaillierte Inhalt vonWann und warum benötigen Sie das Schlüsselwort „typename' in C-Vorlagen?. 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