问题:如何将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 – 如何将三个函数转换为一个通用函数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)