Не могу использовать Operator! = Для bool - PullRequest
0 голосов
/ 05 ноября 2011

Я сделал оператор для! =

PairXY operator != (PairXY a, PairXY b) {
PairXY res(a.x != b.x, a.y != b.y);
return res;
}

И я хочу использовать его в этом цикле:

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

Но это дает мне эту ошибку: не удалось преобразовать 'оператор!= (l.Line :: b, l.Line :: a) 'на' bool ', я попытался изменить оператор PairXY на bool, но это все равно не помогло.

Ответы [ 4 ]

4 голосов
/ 05 ноября 2011

bool оператор! = (PairXY a, PairXY b) {...}

2 голосов
/ 05 ноября 2011

Тип возврата должен быть bool:

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

Кроме того, лучше сделать ссылку на параметры const, как показано выше.

1 голос
/ 05 ноября 2011

Вы хотите вернуть пару (возможно) чисел или один логический тип?

Обычно кортежи отличаются (математически), когда любой компонент попарно отличается.Поэтому я бы написал что-то вроде

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

, но, возможно, вы хотите что-то еще (но тогда я не буду называть это !=).

0 голосов
/ 05 ноября 2011

Вероятно, так и должен быть ваш код.

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;
}
...