C++ C++;-排序算法看不到我的重载“<&引用;用于用户定义类型的运算符。
好的,我有一个用户定义的类型,名为C++ C++;-排序算法看不到我的重载“<&引用;用于用户定义类型的运算符。,c++,algorithm,codeblocks,C++,Algorithm,Codeblocks,好的,我有一个用户定义的类型,名为fraction,它用分子和分母表示普通分数。代码如下: class Fraction { private: int numerator; int denominator; public: Fraction(int numer,int denom) :numerator(numer),denominator(denom){} int get_denom(){return denominator;} int get_numer(){
fraction
,它用分子和分母表示普通分数。代码如下:
class Fraction
{
private:
int numerator;
int denominator;
public:
Fraction(int numer,int denom)
:numerator(numer),denominator(denom){}
int get_denom(){return denominator;}
int get_numer(){return numerator;}
};
正如您所看到的,它完全在头文件中实现
我要做的是用排序算法对分数向量进行排序。下面是重载的代码“请考虑以下代码:
Fraction a, b;
bool res = (a < b);
分数a,b;
bool res=(a
第二行基本上是对
bool res = a.operator<(b);
bool res=a.operator考虑以下代码:
Fraction a, b;
bool res = (a < b);
分数a,b;
bool res=(a
第二行基本上是对
bool res = a.operator<(b);
bool res=a.operator如果你让该操作符成为类成员会发生什么?bool操作符<(分数和秒)
你应该定义operator的参数两种编码风格建议。第一:而不是返回a?真:假
只是返回a
。第二:gcd正在用大炮杀死一只苍蝇来解决这个问题(缓慢)。只需将两个分母相乘。您甚至可以跳过检查分母是否相等,这可能会花费比实际值更多的CPU周期。没有理由在运算符中使用。?true:false
,这与通常情况相反,但在这种情况下,最后一条错误消息是最重要的。如果您进行运算,会发生什么操作类成员?bool操作符<(分数和秒)
您应该定义操作符的参数或两种编码风格建议。第一:而不是返回a?true:false
只是返回a
。第二:gcd正在为此问题用大炮杀死一只苍蝇(速度慢)。只需将两个分母相乘。您甚至可以跳过检查分母是否相等,这可能会花费比实际值更多的CPU周期。没有理由在运算符中使用。?true:false
,这与通常情况相反,但在这种情况下,最后一条错误消息很重要。在这种特殊情况下,运算符在这种特殊情况下,运算符更常见和可读的版本是:booloperator@XanderTulip:这些是完全等效的,其中一个是否比另一个更具可读性取决于讨论。更常见和可读的版本是:booloperator@XanderTulip:这些是完全等效的,以及其中一个是否比ot更具可读性她的问题有待讨论。
bool operator<(Fraction const & first,Fraction const & second)
Fraction a, b;
bool res = (a < b);
bool res = a.operator<(b);