C++ 如何重载调用自身重载版本的函数?
在C++ 如何重载调用自身重载版本的函数?,c++,operator-overloading,overloading,C++,Operator Overloading,Overloading,在Fraction::pow中的pow实例中,将float,int作为输入,应该发出float,但它将Fraction作为输入并抛出错误。您可以尝试调用全局范围pow函数(我想这就是你想要的): 左侧没有任何内容的作用域运算符(:)将调用全局作用域。当然,由于您包含了,您还应该能够在std命名空间中调用它们: temp.num = ::pow(frac.num, power); temp.den = ::pow(frac.den, power); 根据no重载方法接受一个float和一个整数,
Fraction::pow中的pow
实例中,
将float
,int
作为输入,应该发出float
,但它将Fraction
作为输入并抛出错误。您可以尝试调用全局范围pow
函数(我想这就是你想要的):
左侧没有任何内容的作用域运算符(:
)将调用全局作用域。当然,由于您包含了
,您还应该能够在std
命名空间中调用它们:
temp.num = ::pow(frac.num, power);
temp.den = ::pow(frac.den, power);
根据no重载方法接受一个float和一个整数,唯一将float作为第一个参数的方法也将float作为第二个参数
temp.num = std::pow(frac.num, power);
temp.den = std::pow(frac.den, power);
您的分数类是否有另一个重载版本的pow?您能否发布该类中所有
pow
函数的确切签名,以及所有构造函数、复制赋值运算符和转换运算符?显示pow
的第二个重载定义。正如@Mat所说的发布类和函数定义例如,您的分数
类很可能有一个转换构造函数,用于隐式转换,导致调用错误的函数。要确定发生这种情况的原因,您需要向我们展示Mat说的详细信息。
temp.num = std::pow(frac.num, power);
temp.den = std::pow(frac.den, power);
float pow (float base, float exponent);