【发布时间】:2019-11-15 21:44:05
【问题描述】:
假设一个类有一个成员函数,它应该接受一个 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) const { return x * x; }
};
像这样:
int main()
{
Caller c;
myStruct ms;
c.call(myFunc);
c.call(ms);
}
很遗憾,我收到了一个错误。你能帮我让它工作吗?感谢您的帮助!
【问题讨论】:
-
你得到什么错误,在哪一行? Edit你的问题包括这些细节。
标签: c++ templates c++14 typetraits