Wie kann in C eine Vorlagenfunktion als Vorlagenargument verwendet werden, um die Wiederverwendung von Code zu erreichen? Aufrechterhaltung der generischen Funktionalität, insbesondere wenn die beteiligten Funktionen selbst ebenfalls Vorlagen sind?
Um dieses Problem zu beheben, verwenden Sie einen Template-Template-Parameter. Das Hauptkonzept besteht darin, dass Vorlagenparameter aufgrund der Notwendigkeit einer vorherigen Instanziierung keine direkten Vorlagenfunktionen enthalten können. Eine Problemumgehung besteht darin, Dummy-Strukturen zu verwenden, um die Vorlagenfunktion zu kapseln:
template
struct a {
static void foo(T = T()) {}
};
template
struct b {
static void foo(T = T()) {}
};
struct SomeObj {};
struct SomeOtherObj {};
template class T>
void function() {
T::foo();
T::foo();
}
int main() {
function();
function();
}
In diesem Beispiel implementieren die Strukturen a und b Vorlagenfunktionen für die foo-Methode. Die Funktionsvorlage benötigt einen Vorlagenparameter, der es uns ermöglicht, die Vorlagen a und b als Argumente zu übergeben. Innerhalb der Funktion werden spezifische Instanzen der Dummy-Strukturen erstellt, die den Aufruf von foo mit verschiedenen Parametertypen ermöglichen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3