bool operator < (T _Right) if (X < 0) и if ( 0 < X)
От: Чили Россия  
Дата: 09.04.07 07:26
Оценка:
В своем шаблоне класса я перегружаю операторы "<" и ">"
bool operator < (T _Right);
bool operator > (T _Right);

В коде программы проверяю условия:
if (X < 0) ...  // здесь без проблем!
if (0 < X) ...  // а вот здесь компилятор сильно ругается

Подскажите, уважаемые, как быть?
Re: bool operator < (T _Right) if (X < 0) и if ( 0 < X)
От: Smal Россия  
Дата: 09.04.07 07:32
Оценка:
Здравствуйте, Чили, Вы писали:

Ч>В своем шаблоне класса я перегружаю операторы "<" и ">"

Ч>
bool operator < (T _Right);
Ч>bool operator > (T _Right);

Ч>В коде программы проверяю условия:
Ч>
if (X < 0) ...  // здесь без проблем!
Ч>if (0 < X) ...  // а вот здесь компилятор сильно ругается

Ч>Подскажите, уважаемые, как быть?


Определить внешние операторы.
bool operator < (int i, T _Right);
bool operator > (int i, T _Right);
...
С уважением, Александр
Re: bool operator < (T _Right) if (X < 0) и if ( 0 < X)
От: kvser  
Дата: 09.04.07 07:34
Оценка:
Здравствуйте, Чили, Вы писали:

Ч>В своем шаблоне класса я перегружаю операторы "<" и ">"

Ч>
bool operator < (T _Right);
Ч>bool operator > (T _Right);

Ч>В коде программы проверяю условия:
Ч>
if (X < 0) ...  // здесь без проблем!
Ч>if (0 < X) ...  // а вот здесь компилятор сильно ругается

Ч>Подскажите, уважаемые, как быть?


написать соответствующие операторы как внешние функции(не члены класса), а в классе сделать их френдами
Re[2]: bool operator < (T _Right) if (X < 0) и if ( 0 < X)
От: Аноним  
Дата: 09.04.07 09:19
Оценка:
Здравствуйте, Smal, Вы писали:

S>Определить внешние операторы.

S>
S>bool operator < (int i, T _Right);
S>bool operator > (int i, T _Right);
S>...
S>

Определил!
friend bool operator < (const int _Left, const nullvalue &_Right);

все-равно ругается!
error C2679: binary '<' : no operator found which takes a right-hand operand of
type 'nullvalue<T>' (or there is no acceptable conversion)
Re[3]: bool operator < (T _Right) if (X < 0) и if ( 0 < X)
От: saddva  
Дата: 09.04.07 09:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Smal, Вы писали:


S>>Определить внешние операторы.

S>>
S>>bool operator < (int i, T _Right);
S>>bool operator > (int i, T _Right);
S>>...
S>>

А>Определил!
А>
friend bool operator < (const int _Left, const nullvalue &_Right);

А>все-равно ругается!
А>error C2679: binary '<' : no operator found which takes a right-hand operand of
А>type 'nullvalue<T>' (or there is no acceptable conversion)

Похоже, nullvalue у вас шаблон. Значит, скорее всего возникла проблема friend'ов для шаблонов... См. например здесь
Автор: MaximE
Дата: 20.02.05
.
Re: bool operator < (T _Right) if (X < 0) и if ( 0 < X)
От: Roman Odaisky Украина  
Дата: 09.04.07 13:35
Оценка:
Здравствуйте, Чили, Вы писали:

Ч>В своем шаблоне класса я перегружаю операторы "<" и ">"


Ч>Подскажите, уважаемые, как быть?


template <class T>
class X: public boost::less_than_comparable<X<T>, T>
{
public:
    bool operator <(T const &);
};
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.