Definieren einer Template-Member-Funktion außerhalb der Klassendefinition
Bei der Template-Programmierung kann es notwendig sein, eine Template-Member-Funktion außerhalb von zu definieren die Klassendefinition unter Beibehaltung des Zugriffs auf beide Vorlagenparameter.
Beachten Sie den folgenden Codeausschnitt:
<code class="cpp">template <class T> class Foo { public: template <class U> void bar(); };</code>
Um die Balkenfunktion außerhalb der Klassendefinition zu implementieren, können wir die folgende Syntax verwenden:
<code class="cpp">template<class T> template <class U> void Foo<T>::bar() { ... }</code>
Diese Syntax teilt dem Compiler mit, dass die Bar-Funktion eine Mitgliedsfunktion der Foo-Klasse mit einem Template-Parameter T ist. Innerhalb der Definition von bar können wir sowohl auf T als auch auf den zusätzlichen Template-Parameter U zugreifen benötigt.
Zum Beispiel:
<code class="cpp">template<class T> template <class U> void Foo<T>::bar() { std::cout << "T: " << typeid(T).name() << ", U: " << typeid(U).name() << std::endl; }</code>
Dieser Code gibt die Namen der T- und U-Vorlagenparameter aus, wenn die Balkenfunktion aufgerufen wird.
Das obige ist der detaillierte Inhalt vonWie definiere ich eine Template-Member-Funktion außerhalb der Klassendefinition?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!