0
Существует немного «сложный» код, в котором класс A хранит указатель на функцию (инициализируется как F1). Функция F1 вызывает F2 и передает F3 в качестве параметра шаблона.C++, указатель на функцию + шаблоны функций
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? Спасибо за вашу помощь ...
Благодарим за быстрое решение :-) – justik