Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > инициализация с условием const в классах


Автор: nanotexnik 6.4.2013, 15:56
Есть класс:
Код

 class Domino
    {   
    public:
        Domino(const int left = 0, const int right = 0);
    private:
        const int mLeft;
        const int mRight; 
    };


Необходимо, чтобы left был не больше right.
Пробую так: 
Код

Domino::Domino(const int left, const int right)  : mLeft(left), mRight(right)
{      
    if (left > right)
        this = new Domino(right, left);
}

Данная конструкция не работает. 

Может ктонибуть подсказать, как это может быть реализованно?
Необходимо гарантировать, что значения mLeft и mRight не будут изменены после инициализации. 

p.s.Ошибся темой, хотел разместить в вопросах по С++

Автор: taiven 12.4.2013, 17:57
Мне кажется, в данном случае логичнее было бы бросить исключение, чем пытаться поменять местами значения переменных
Код

Domino::Domino(const int left, const int right)  : mLeft(left), mRight(right)
{      
    if(left > right)
        //....бросаем исключение...
}

Автор: volatile 13.4.2013, 23:30
Код

Domino::Domino(const int left, const int right)  
  :  mLeft (std::min (left, right))
  ,  mRight (std::max (left, right))
    {}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)