不能使用Operator!= bool

时间:2011-11-05 18:37:56

标签: c++ operator-keyword

我为!=

制作了算子
PairXY operator != (PairXY a, PairXY b) {
PairXY res(a.x != b.x, a.y != b.y);
return res;
}

我想在这个循环中使用它:

while (l.b!=l.a){}

但它给了我这个错误:无法将'operator!=(l.Line :: b,l.Line :: a)'转换为'bool',我尝试将运算符的PairXY更改为bool,但它仍然没有没帮忙。

4 个答案:

答案 0 :(得分:4)

bool operator!=(PairXY a,PairXY b){...}

答案 1 :(得分:2)

返回类型应为bool

bool operator != (const PairXY & a, const PairXY & b);

另外,最好使参数const参考,如上所示。

答案 2 :(得分:1)

你想返回一对(可能)数字,还是一个布尔值?

通常,当任何组件成对不同时,元组与数学不同(数学上)。所以我会编写类似

的代码
bool operator != (PairXY a, PairXY b) { return a.x != b.x || a.y != b.y; }

但也许你想要别的东西(但是,我不会称之为!=)。

答案 3 :(得分:0)

这可能就是你的代码应该如何。

class PairXY {
public:
    PairXY( int _x, int _y): x(_x),y(_y){}

    bool operator != (const PairXY a) {
        return(this->x != a.x && this->y != a.y);
    }
private:
    int x;
    int y;
};
int main ( int argc, char** argv ) {
    return 0;
}