与运营商不匹配*

时间:2016-04-09 22:38:13

标签: c++

inaccessible method HugeInt HugeInt:: operator*(int op2)const     {; return *this * HugeInt(op2)

上面的代码应该将对象乘以int。 驱动程序中的示例:HugeInt n7(5); HugeInt n5; n5 = n7 * 8; 而不是运行代码,它表示*不匹配。已经尝试寻找其他解决方案但没有一个会起作用。功能声明已公开。

1 个答案:

答案 0 :(得分:2)

您收到错误只是因为您尚未定义operator*(HugeInt)。您只为operator*(int)定义了一个重载。

您需要注意C ++中的类型。如果您要细分您的陈述,您会发现*this的类型将是HugeInt。然后在乘法运算的右侧,HugeInt(op2)HugeInt。然后,编译器将尝试在全局命名空间中查找operator*(HugeInt, HugeInt),或在类定义中查找operator*(HugeInt)。我在这里要小心,因为如果你将乘法语句更正为return *this * op2;,你可能最终会陷入无限循环。