Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;,指向函数+;函数模板_C++_Templates_Parameter Passing_Function Pointers - Fatal编程技术网

C++ c++;,指向函数+;函数模板

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

有一个稍微“复杂”的代码,其中类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 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);}
^^^^^

感谢快速解决方案:-)感谢快速解决方案:-)