Maison > Article > développement back-end > Comment convertir un pointeur de fonction en objet de fonction et vice versa ?
En C++, les pointeurs de fonction peuvent être convertis en objets de fonction via le modèle std::function : utilisez std::function pour envelopper les pointeurs de fonction dans des objets de fonction. Utilisez la fonction membre std::function::target pour convertir un objet fonction en pointeur de fonction. Cette transformation est utile dans des scénarios tels que la gestion d'événements, les rappels de fonctions et les algorithmes génériques, offrant une plus grande flexibilité et une plus grande réutilisabilité du code.
En C++, le pointeur de fonction et l'objet de fonction sont deux concepts étroitement liés qui nous permettent de travailler avec des fonctions de manière plus flexible. Dans certains cas, vous souhaiterez peut-être convertir un pointeur de fonction en objet fonction, ou vice versa.
Vous pouvez convertir le pointeur de fonction en objet de fonction en utilisant le modèle std::function
. std::function
accepte toute entité appelable (y compris les pointeurs de fonction) et l'enveloppe dans un objet appelable. std::function
模板来将函数指针转换为函数对象。std::function
接受任何可调用的实体(包括函数指针)并将其包装在一个可以调用的对象中。
// 函数指针 int add(int a, int b) { return a + b; } // 转换为函数对象 std::function<int(int, int)> add_fn = add; // 调用函数对象 int result = add_fn(10, 20); // 结果为 30
要将函数对象转换为函数指针,可以使用 std::function::target
成员函数。此函数返回一个指向函数对象底层函数的函数指针。
std::function<int(int, int)> add_fn = [](int a, int b) { return a + b; }; // 转换为函数指针 int (*add_ptr)(int, int) = add_fn.target<int (*)(int, int)>(); // 调用函数指针 int result = add_ptr(10, 20); // 结果为 30
在以下场景中,您可能会发现将函数指针转换为函数对象或 vice versa 很有用:
std::function
rrreeePour convertir un objet fonction en pointeur de fonction, vous pouvez utiliser la fonction membre std::function::target
. Cette fonction renvoie un pointeur de fonction vers la fonction sous-jacente de l'objet fonction.
std::function
peut être utilisé pour transmettre n'importe quelle entité appelable à un algorithme générique, offrant ainsi de la flexibilité. 🎜🎜🎜En comprenant la conversion entre les pointeurs de fonction et les objets de fonction, vous pouvez écrire du code plus flexible et réutilisable. 🎜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!