Информация об изменениях

Сообщение Re: "class const - метод" - можно ли организовать? от 23.09.2015 10:30

Изменено 23.09.2015 10:36 VTT

У вас тут const-ность нарушается из-за наличия в классе не const ссылки на самого себя. Этот пример можно упростить до
class
t_Something
{
  protected: t_Something * m_p_non_const;
  protected: int           m_x = 0;
    
  public: t_Something(void)
  :  m_p_non_const(this)
  {
    // do nothing;
  }
    
  public: void
  Set_X(int const x) const
  {
    m_p_non_const->m_x = x;
  }
};

int
main(void)
{
  t_Something something;
  something.Set_X(42);
}
У вас тут const-ность нарушается из-за наличия в классе не const ссылки на самого себя. Этот пример можно упростить до
class
t_Something
{
  protected: t_Something * m_p_non_const;
  protected: int           m_x = 0;
    
  public:
  t_Something(void)
  :  m_p_non_const(this)
  {
    // do nothing;
  }
    
  public: void
  Set_X(int const x) const
  {
    m_p_non_const->m_x = x;
  }
};

int
main(void)
{
  t_Something something;
  something.Set_X(42);
}


Если хочется гарантий, то можно делать immutable объекты.