运算符*不匹配

No match for operator *

本文关键字:不匹配 运算符      更新时间:2023-10-16

HugeInt HugeInt:: operator*(int op2)const{return *this * HugeInt(op2)}

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

您得到错误只是因为您没有定义operator*(HugeInt)。您只为operator*(int)定义了一个重载。

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