Maison > Article > développement back-end > Comment utiliser des modèles de fonctions C++ pour généraliser les pointeurs de fonctions ?
Le modèle de fonction C++ permet la généralisation des pointeurs de fonction et prend en charge les pointeurs de fonction de différents types de paramètres. Les étapes spécifiques sont les suivantes : déclarer un modèle de fonction avec un pointeur de fonction, où T est le paramètre de type de modèle. Passez le pointeur de fonction à généraliser en paramètre à la fonction modèle. Les fonctions de modèle renvoient des pointeurs de fonction génériques.
Utilisez des modèles de fonctions C++ pour généraliser les pointeurs de fonctions
Introduction
Les pointeurs de fonctions C++ fournissent un moyen de transmettre des fonctions en tant que paramètres ou de valeurs de retour. Toutefois, si vous souhaitez créer des pointeurs de fonction prenant en charge différents types de paramètres, vous devez utiliser des modèles de fonction. Les modèles de fonctions peuvent générer différentes versions d'une fonction avec des paramètres de types spécifiques.
Syntaxe du modèle de fonction
Voici comment déclarer un modèle de fonction avec un pointeur de fonction :
template <typename T> auto make_function_pointer(T function) { return function; }
où :
T
est le paramètre de modèle du type à utiliser. Il peut être de n’importe quel type, y compris les types de pointeurs de fonction. T
是要使用的类型的模板参数。它可以是任何类型,包括函数指针类型。function
function
est un pointeur de fonction pour être générique. Cas pratique
Créons un pointeur de fonction générique pouvant recevoir tout type de fonction et la renvoyer sous forme d'entier.#include <iostream> template <typename T> int generic_function_pointer(T function) { return function(); } int main() { // 定义一个函数,返回一个整数 int my_function() { return 10; } // 创建一个泛型函数指针 auto function_ptr = generic_function_pointer(my_function); // 调用函数指针 int result = function_ptr(); std::cout << "Result: " << result << std::endl; return 0; }sortie🎜
Result: 10
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!