c – 如何将三个函数转换为一个通用函数?

c – 如何将三个函数转换为一个通用函数?,第1张

概述我在下面的示例中有三个getColors函数. 问题:如何将threee getcolors函数转换为一个泛型函数? struct EcvColorMap{ vector<Scalar> getColors(){ vector<Scalar> result; //.... return result; }};struct Scal 我在下面的示例中有三个getcolors函数.

问题:如何将threee getcolors函数转换为一个泛型函数?

struct EcvcolorMap{    vector<Scalar> getcolors(){        vector<Scalar> result;        //....        return result;    }};struct Scalar{   int val[3];};    vector<Scalar> getcolors(vector<Scalar> colors){        return colors;    }    vector<Scalar> getcolors(Scalar color){        return{ color };    }    vector<Scalar> getcolors(EcvcolorMap color_map){        return color_map.getcolors();    }
解决方法 问题是:函数的主体是不同的,如果你试图制作一个通用的,并使其他部分专业化,完全专业化,如

template<typename T> vector<Scalar> getcolors(T colors) {    return {colors};}//template<typename T> vector<Scalar> getcolors(vector<T> colors) { // Not really necessary - see List initialization//  return colors;//}template<> vector<Scalar> getcolors<EcvcolorMap>(EcvcolorMap colors) {    return colors.getcolors();}

您仍然必须为三个不同的模板编写代码而根本没有任何收益(编译时优势还是代码重用?).

我的个人建议:不要仅仅因为它很酷而使用模板,在实际需要时使用它们.在大型软件视图中,这是至关重要的.你发布的设计对我有意义.

总结

以上是内存溢出为你收集整理的c – 如何将三个函数转换为一个通用函数?全部内容,希望文章能够帮你解决c – 如何将三个函数转换为一个通用函数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1216081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存