[假定类具有成员函数,该成员函数应接受double(double)函数或以“ MyStructFunc”公共成员函数作为参数的类实例:
#include<functional>
#include <type_traits>
struct Caller
{
// (1.)
double call(std::function<double(double)> func) { return func(1); }
// (2.)
template<typename T>
double call(const T& S) { return S.MyStructFunc(2); }
};
因此,例如,我们可以通过
double myFunc(double x) { return x * x * x; }
或
struct myStruct
{
double MyStructFunc(double x) { return x * x; }
};
像这样:
int main()
{
Caller c;
myStruct ms;
c.call(myFunc);
c.call(ms);
}
不幸的是,我得到一个错误。你能帮我使它工作吗?谢谢您的帮助!
std::function
,因此您的模板方法更合适。