gpt4 book ai didi

c++,函数指针+函数模板

转载 作者:行者123 更新时间:2023-11-28 02:05:01 24 4
gpt4 key购买 nike

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

不幸的是,出现了以下错误:

error: 'func' cannot be used as a function

问题出在哪里?还有什么方法可以避免将 a、b 作为 F2 和 F3 参数传递?感谢您的帮助...

最佳答案

更改为:

template <typename T>
T F1(const T a, const T b) { return F2(F3<T>, a, b);}
^^^^^

关于c++,函数指针+函数模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37867660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com