【发布时间】:2016-05-06 17:08:22
【问题描述】:
有没有办法避免函数重载并使用模板编写更通用的函数?目前,我的代码如下所示:
placement Detect::predict(Eigen::Array<double, rowSize, 1> &feature)
和
position Detect::predict(std::unordered_map<std::string, std::vector<double>> &feature)
在上面,placement 和 position 是具有各种类别的 ENUMS。
如何使用template 编写此内容?
【问题讨论】:
-
IMO 无法在您的函数中使用模板。
-
好的。所以为了澄清我的理解,输入参数和返回类型应该相同才能使用模板?
-
没有参数和返回类型不必与模板参数相同,但是没有简单或优雅的方法来制作可以处理这两种情况的单个函数,哪种类型(返回或参数)应该被模板化?一个或另一个或两者兼而有之?您将如何区分这些实现?在我看来,重载是最好的方法,如果两个函数之间有共同的代码,把共同的代码放在你可以调用的第三个函数中。
-
好的,谢谢大家。
-
好吧,您的返回类型可以是您想要的任何类型,但输入参数应该以某种方式相关。也许有我看不到的关系。如果有它们的实现,我可以说更多。
标签: c++ templates generics overloading