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);