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