如何重载调用自身重载版本的函数?

时间:2012-02-21 07:00:00

标签: c++ operator-overloading overloading

    Fraction Fraction::pow (Fraction frac, int power)
    {
        Fraction temp;
    temp.num = pow(frac.num, power);
    temp.den = pow(frac.den, power);

    return (temp);
    }
    // Assume that num and den are float and cmath is included

powFraction::pow,的实例中,floatint作为输入,应该发出float,但需要Fraction 1}}作为输入并抛出错误。

2 个答案:

答案 0 :(得分:3)

您可以尝试调用全局范围pow函数(我想这是您想要的函数):

temp.num = ::pow(frac.num, power);
temp.den = ::pow(frac.den, power);

在其左侧没有任何内容的作用域运算符(::)将调用全局作用域。当然,既然你要包括<cmath>,你也应该能够在std命名空间中调用它们:

temp.num = std::pow(frac.num, power);
temp.den = std::pow(frac.den, power);

答案 1 :(得分:0)

根据http://www.cplusplus.com/reference/clibrary/cmath/pow/,没有重载方法接受一个浮点数和一个整数,唯一一个将float作为第一个参数的方法也将float作为第二个参数。

float pow (float base, float exponent);

你的Fraction类是否有另一个重载版本的pow?