C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何将三个函数转换为一个通用函数?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_450_1@
我在下面的示例中有三个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 – 如何将三个函数转换为一个通用函数?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。