C++ c++;,指向函数+;函数模板
有一个稍微“复杂”的代码,其中类a存储一个指向函数的指针(初始化为F1)。函数F1调用F2并将F3作为模板参数传递C++ c++;,指向函数+;函数模板,c++,templates,parameter-passing,function-pointers,C++,Templates,Parameter Passing,Function Pointers,有一个稍微“复杂”的代码,其中类a存储一个指向函数的指针(初始化为F1)。函数F1调用F2并将F3作为模板参数传递 template <typename T> using cfunction = T(*)(T, T); template <typename T> T F3(const T a, const T b) {return a * b;} template <typename T, typename Function> T F2(Function
template <typename T>
using cfunction = T(*)(T, T);
template <typename T>
T F3(const T a, const T b) {return a * b;}
template <typename T, typename Function>
T F2(Function func, const T a, const T b) {return func(a, b);}
template <typename T>
T F1(const T a, const T b) { return F2(F3<T>(a, b), a, b);}
template <typename T>
class A {
public:
cfunction <T> X;
A() : X(&F1) {}
A(const cfunction <T> &pX) : X(pX) {};
virtual ~A() {};
};
int main() {
A<double> b(F1<double>);
return 0;
}
问题在哪里?是否有任何方法可以避免将a、b作为F2和F3参数传递?感谢您的帮助…更改为:
template <typename T>
T F1(const T a, const T b) { return F2(F3<T>, a, b);}
^^^^^
模板
F1(常数ta,常数tb){返回F2(F3,a,b);}
^^^^^
更改为:
template <typename T>
T F1(const T a, const T b) { return F2(F3<T>, a, b);}
^^^^^
模板
F1(常数ta,常数tb){返回F2(F3,a,b);}
^^^^^
感谢快速解决方案:-)感谢快速解决方案:-)