Heim > Backend-Entwicklung > C++ > Wann ist das Schlüsselwort „typename' in C-Vorlagen erforderlich?

Wann ist das Schlüsselwort „typename' in C-Vorlagen erforderlich?

Patricia Arquette
Freigeben: 2024-12-26 12:52:09
Original
269 Leute haben es durchsucht

When is the

Warum ist das Schlüsselwort „typename“ notwendig?

In der Programmierung werden häufig verschachtelte Namen verwendet, bei denen der Name einer Entität ( (z. B. eine Klasse) ist im Namen einer anderen Entität (z. B. einer Mitgliedsfunktion) enthalten. Während diese Verschachtelung normalerweise ausreicht, um zu unterscheiden, auf welche Entität verwiesen wird, gibt es Fälle, in denen der Compiler eine explizite Angabe erfordert.

Erklärung des Schlüsselworts „typename“

Das „typename Das Schlüsselwort „ wird verwendet, um explizit zu deklarieren, dass sich ein verschachtelter Name auf einen Typ bezieht. Dies ist erforderlich, wenn der Compiler den Typ eines verschachtelten Namens nicht aus dem Kontext ableiten kann. Ein solcher verschachtelter Name wird als „abhängiger Name“ bezeichnet.

Ein verschachtelter Name wird abhängig, wenn er innerhalb einer Vorlageninstanz mit einem unbekannten Parameter verwendet wird. In dieser Situation verfügt der Compiler nicht über genügend Informationen, um den spezifischen Typ des verschachtelten Namens zu bestimmen, bis die Vorlagenparameter bekannt sind.

Beispiel

Bedenken Sie den folgenden Code :

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

In diesem Beispiel ist das Schlüsselwort „typename“ erforderlich, da der verschachtelte Name „iterator“ vom Vorlagenparameter „K“ abhängt. Ohne das Schlüsselwort „typename“ wüsste der Compiler nicht, dass „iterator“ sich auf den Typ „vector

::iterator“ bezieht.

Andere Fälle, in denen „typename“ erforderlich ist

Zusätzlich zum obigen Beispiel gibt es weitere Fälle, in denen „Typname“ erforderlich ist:

  • Bei Verweisen zu einem verschachtelten Typ innerhalb einer Vorlagenklasse
  • Bei Verwendung eines qualifizierten Namens für den Zugriff auf einen Typ
  • Beim Deklarieren eines Vorlagenparameters
  • Beim Spezialisieren einer Vorlage für einen bestimmten Typ

Das obige ist der detaillierte Inhalt vonWann ist das Schlüsselwort „typename' in C-Vorlagen erforderlich?. 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