我不能将typedef与模板一起使用,如何更改?语法错误“typedef模板是非法的”。我想对print()
这样的函数使用:print<double>(1, 2, add);
用于任何类型的数据。
#include <iostream>
using namespace std;
template <typename type> /*typedef*/ type(*calculator)(type, type);
template <typename type> inline const type& add(type x, type y) { return (type) x + y; }
template <typename type> inline const type& sub(type x, type y) { return (type) x - y; }
template <typename type> inline const type& mul(type x, type y) { return (type) x * y; }
template <typename type> inline const type& dev(type x, type y) { return (type) x / y; }
template <typename type> void print(type x, type y, calculator func) {
cout << "(" << x << "," << y << ")=" << func(x, y);
}
int main(void) {
print<float>(1, 2, add);
print<float>(1, 2, sub);
print<float>(1, 2, mul);
print<float>(1, 2, dev);
}