大于和小于一起 >我想在C++中重载操作符>,可以编写这样的代码:< /p> if(a>x>b)...;

大于和小于一起 >我想在C++中重载操作符>,可以编写这样的代码:< /p> if(a>x>b)...;,c++,operator-overloading,C++,Operator Overloading,我已经看到这个操作符只需要两个参数 你知道怎么做吗 谢谢 这是一个相对简单的示例,但它应该满足您的要求: #include <iostream> struct cool_operator { cool_operator(int _n = 0, bool b = true) : first(b), n(_n) {} bool first; bool operator <(int x) const { return first

我已经看到这个操作符只需要两个参数

你知道怎么做吗


谢谢

这是一个相对简单的示例,但它应该满足您的要求:

#include <iostream>

struct cool_operator
{
    cool_operator(int _n = 0, bool b = true) : first(b), n(_n) {}

    bool first;

    bool operator <(int x) const
    {
        return first && (n < x);
    }

    int n;
};

cool_operator operator <(int x, cool_operator const &rhs)
{
    return cool_operator(lhs.n, x < rhs.n);
}

int main()
{
    cool_operator c(4);

    std::cout << std::boolalpha << (3 < c < 5); // true
}
#包括
结构cool_运算符
{
cool_运算符(int_n=0,bool b=true):第一(b),n(_n){
布尔优先;

bool操作符这是一个相对简单的示例,但它应该满足您的要求:

#include <iostream>

struct cool_operator
{
    cool_operator(int _n = 0, bool b = true) : first(b), n(_n) {}

    bool first;

    bool operator <(int x) const
    {
        return first && (n < x);
    }

    int n;
};

cool_operator operator <(int x, cool_operator const &rhs)
{
    return cool_operator(lhs.n, x < rhs.n);
}

int main()
{
    cool_operator c(4);

    std::cout << std::boolalpha << (3 < c < 5); // true
}
#包括
结构cool_运算符
{
cool_运算符(int_n=0,bool b=true):第一(b),n(_n){
布尔优先;


bool运算符哇,为什么我不能用一个更好的世界来做梦lol…我做梦了,只得到了一个负1…@MooingDuck为什么不这样做。我相信这一定像数学运算。在任何语言被用于数学之前,像这样的运算都是可能的。如果我们能声明x:5什么?10@MooingDuck我看到你的问题。好,C++不是设计来做这件事的,但我只是在用语言开玩笑。我甚至在答案还不是我喜欢的东西之前就知道了。一种语言更多的数学,可以给出数学的表达能力。C++可以比数学表达更多。可以,这只是一个不同的语法。哇,为什么我不能用一个更美好的世界来做梦lol…我做梦,得到一个负1…@MooingDuck为什么不这样做。我相信它一定像数学运算。在任何语言被用于数学之前,像这样的运算都是可能的。如果我们可以声明x:5什么?10@MooingDuck我看到你的问题。好吧,C++不是设计来做的,但我只是在用语言开玩笑。我甚至在答案不完全是我之前就知道了。我想实际上是一种数学,可以给数学提供表达能力。C++可以比数学表达更多。可以,这只是一个不同的语法。如果你要费那么大的劲,你最好只写一个
between
函数。我知道有这种方法可以做到这一点。但是,为什么不跟语言开玩笑呢。这段代码有两个问题,第一,n是静态的,不应该在构造函数中初始化,第二,用8r试试这个a大于4。@Leandro现在我发现你的编译器不支持C++11。问题是你没有使用我对代码所做的最新更新。复制并粘贴我在这里的代码,然后重试。没问题!别忘了接受。:)如果你会遇到那么多麻烦,你最好只编写一个
介于
之间的函数。我知道有这样的方法可以做到这一点。但是,为什么不开语言玩笑呢。这段代码有两个问题,第一,n是静态的,不应该在构造函数中初始化,第二,用8而不是4来尝试这一点。@Leandro现在我看到你的编译器不支持C++11。问题是你没有使用我对m所做的最新更新y代码。复制并粘贴我的代码,然后重试。没问题!别忘了接受。:)