Giriş
Şu satırı dahil ederiz.
Şöyle yaparız.
< ve == operatörü tanımlanır. Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/operators.hpp>
equality_comparable Sınıfı
Sadece == operatorünü tanımlama yeterli. Şöyle yaparız.class Foo //to get != operator for free
: public boost::equality_comparable<Foo>
{
friend bool operator == ( Foo const & lhs, Foo const & rhs );
public:
...
};
// Implementation of equality operator
bool operator == (Foo const & lhs, Foo const & rhs)
{
return ...;
}
operators SınıfıŞöyle yaparız.
class A : boost::operators<A>
{
public:
bool operator < (const A&) const { return false; }
};
operators sınıfı less_than_comparable sınıfından kalıtır. Dolayısıyla >, >= ve >= metodlarını sağlar.template <class T, class B = operators_detail::empty_base<T> >
struct less_than_comparable1 : B
{
friend bool operator>(const T& x, const T& y)
{ return y < x; }
friend bool operator<=(const T& x, const T& y)
{ return !static_cast<bool>(y < x); }
friend bool operator>=(const T& x, const T& y)
{ return !static_cast<bool>(x < y); }
};
totaly_ordered Sınıfı< ve == operatörü tanımlanır. Şöyle yaparız.
class Foo : public boost::totally_ordered<Foo>
{
public:
friend bool operator< (const Foo& lhs, const Foo& rhs)
{
...
}
friend bool operator== (const Foo& lhs, const Foo& rhs) {
...
}
};
Hiç yorum yok:
Yorum Gönder