15 Şubat 2017 Çarşamba

operators

Giriş
Ş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