我有运算符重载的问题:
我想用这样的运算符写一个类:
class BigNum
{
public:
template<class T>
bool operator==(const T &input);
template<class T>
friend bool operator==(const T &A,BigNum & B);
};
可以致电:
BigNum A;
int a;
A==a;
a==A;
但是在致电时:
BigNum A,B;
A==B;
它将得到编译器错误:
而且如果我改变了,也会有同样的问题
template<class T>
bool operator==(const T &input);
至
bool operator==(const BigNum &input);
但是如果操作符重载是这样的话就可以了(但是它不能执行
Any type==BigNum
):class BigNum
{
public:
bool operator==(const BigNum &input);
template<class T>
bool operator==(const T &input);
};
如果我想编写运算符重载,以便它可以完成所有这些操作:
我该如何解决?谢谢。
最佳答案
我建议删除一个成员==
模板,只为operator==
提供三个非成员重载-两个模板化,一个在左边带有BigNum
,另一个在右边;另一面是非模板的,两侧都带有BigNum
。
关于c++ - 模板重载的C++模糊运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40531502/