实现function

实现function

需要先声明template class myfunction;下面做特例化template<typename R, typename... A> 需要

#include <iostream>
#include <functional>
using namespace std;
template <typename Signature>
class myfunction;
template<typename R, typename... A> //可变参模板
class myfunction<R(A...)>
{
public:
using PFUNC = R(*)(A...); //需要一个函数指针
myfunction(PFUNC pfunc) :_pfunc(pfunc) {}//使用传入的函数
R operator()(A... arg) { //重载operator()
return _pfunc(arg...);
}
private:
PFUNC _pfunc;
};
void print1(int a) {
cout << a << endl;
}
void print2(string s) {
cout << s << endl;
}
int main() {
myfunction<void(int)> fun1 = print1;
myfunction<void(string)> fun2 = print2;
fun1(999); //打印999
fun2("hello"); //打印hello
}
posted @   霁空  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示