作为C ++的新手,我想知道关于泛型函数的最佳实践是什么。我正在尝试实现一个全局函数,它将参数作为通用数据点的向量,将一个这样的数据点映射到不同的泛型类型的函数以及返回映射数据点的通用指针:
template <class Parameter_T, class Data_T, class CalculateParameterF>
void example(vector<Data_T> data,
CalculateParameterF calculateParameters,
Parameter_T& bestFittingParameters);
现在我的问题:如果我将上述声明放在头文件中并将其实现放在.cpp
文件中,则代码将无法编译。如果我理解正确,编译器就不会理解它应该如何准确地编译泛型函数。为了给它一些提示,我可以将实现主体留在头文件中,或者添加第二个声明,填充我想要使用它的特定类型。
但是,这两种解决方案似乎都有点难看。这些真的是唯一的解决方案还是我错过了什么?如果不是,我应该选择什么样的解决方案?为什么?