c ++除了一行外,两个函数的作用相同

nit*_*ayc 1 c++ templates duplicates

我不想复制我的代码,但我有2个功能,除1行外,它们都是相同的.我确实需要单独的函数来调用私有函数,这可能是一个模板,并将解决我的重复代码问题.

double EuclideanDistance::calculateDistance(const Point &p1, const Point &p2) const
{
    if (p1.getDimension()!=p2.getDimension())
        return 0;
    double sum = 0.0;
    for( size_t i = 0; i < p1.getDimension(); i++)
    {
        sum += pow( p1[i] - p2[i], 2.0);
    }
    return sqrt(sum);
}

double EuclideanDistance::calculateWeightedDistance(const Point &p1, const Point &p2, const double *weights) const
{
    if (p1.getDimension()!=p2.getDimension())
        return 0;
    double sum = 0.0;
    for( size_t i = 0; i < p1.getDimension(); i++)
    {
        sum += pow( ((p1[i] - p2[i])*weights[i]), 2.0);//here is the difference
    }
    return sqrt(sum);
}
Run Code Online (Sandbox Code Playgroud)

你有什么建议?

aia*_*iao 5

calculateWeightedDistance完全实施.和重量的calculateDistance呼叫calculateWeightedDistance1.0