В своем шаблоне класса я перегружаю операторы "<" и ">"
bool operator < (T _Right);
bool operator > (T _Right);
В коде программы проверяю условия:
if (X < 0) ... // здесь без проблем!
if (0 < X) ... // а вот здесь компилятор сильно ругается
Подскажите, уважаемые, как быть?
Здравствуйте, Чили, Вы писали:
Ч>В своем шаблоне класса я перегружаю операторы "<" и ">"
Ч>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);
...
Здравствуйте, Чили, Вы писали:
Ч>В своем шаблоне класса я перегружаю операторы "<" и ">"
Ч>bool operator < (T _Right);
Ч>bool operator > (T _Right);
Ч>В коде программы проверяю условия:
Ч>if (X < 0) ... // здесь без проблем!
Ч>if (0 < X) ... // а вот здесь компилятор сильно ругается
Ч>Подскажите, уважаемые, как быть?
написать соответствующие операторы как внешние функции(не члены класса), а в классе сделать их френдами
Здравствуйте, 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)
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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
.
Здравствуйте, Чили, Вы писали:
Ч>В своем шаблоне класса я перегружаю операторы "<" и ">"
Ч>Подскажите, уважаемые, как быть?
template <class T>
class X: public boost::less_than_comparable<X<T>, T>
{
public:
bool operator <(T const &);
};