我的目标是让非成员函数使用模板作为返回值。这样我就可以返回一个浮点数组、一个双精度数组等。我得到一个“无法推断模板参数'T'”错误。
这是我尝试使用的方法:
template<typename T>
T* make(double magnitude, double frequency, double radians, double seconds,
int samplesPerSecond) {
long samples = length(seconds, samplesPerSecond);
T *wave = new T[samples];
for (int i = 0; i < samples; i++) {
wave[i] = magnitude
* sin(
(2.0 * (M_PI) * frequency * i / samplesPerSecond)
+ radians);
}
return wave;
}
我首先尝试正常调用该方法。
double *ds = make(magnitude, frequency, radians, seconds, samplesPerSecond);
我尝试在函数名之后添加类型名。
double *ds = make<double>(magnitude, frequency, radians, seconds, samplesPerSecond);
我查看了网络上的几个页面,到目前为止它们都涵盖了成员函数,并解释了不能从返回类型推导出类型,那么你如何告诉编译器类型呢?