65,134
社区成员
发帖
与我相关
我的任务
分享
int fcn1(int*);
int fcn2(int*,int*);
int fcn3(int*,int*,double*);
int lmdif(std::function<void()> fcn, ...);
lmdif(std::bind(&fcn1, &int1));
lmdif(std::bind(&fcn2, &int1, &int2));
...
另外,参数太多了,看得头晕,建议对参数进行结构化布局,不同领域、不同用途、不同层次的参数分别放入不同的对象中,最终一个对象包含所有参数传入函数。不然太乱了。
“能不能只声明一个模板函数,作为传入参数,调用的时候根据具体情况,调用不同的函数。”
你也说了,调用的时候根据具体情况,调用不同的函数,那就是这些不同的函数都可能会用到,那就是说在无法明确哪个函数会被用到的情况下,就必须提供所有可能会调用到的函数。
建议:
解决方案1:不要传函数指针,而是传对象,在函数中调用对象的成员函数;
解决方案2:将不同的情况分开,通过重载函数实现;
解决方案3:添加一个中间层,适配所有的函数类型?
取决于你”这些不同的函数“有哪些共性。