Использование функции-члена const
Мы с моим другом работаем над классом под названием rectangle.
У нас есть функция-член, которая возвращает квадрат (объект нашего класса)
площади, эквивалентной средней площади в 2 квадрата.
Итак (площадь квадрата 1 + площадь квадрата 2)/ 2
сторона возвращенного квадрата должна быть округлена до ближайших. Мы работали над этим и после отладки поняли, что const в конце нашей функции мешает нам изменять значения.
Надеюсь, я предоставил достаточно информации.
Мой вопрос заключается в том, каким должен быть наш подход, если мы не можем изменять значения внутри этой функции? обратите внимание, что мы не должны создавать новые функции, просто кодируя реализацию класса. Кроме того, есть и другие функции, но я показываю их только потому, что они больше всего относятся к моему вопросу, а остальные, похоже, в порядке.
class square { public: square(int s); int plus(square sq) const; square avgSquare(square sq) const; // this the function we are trying to fix ~square(); // default constructor private: int side; }; //_________class implementation below___________ // parameterized constructor with default parameter square::square(int s=0) { side = s; } // the function below seems fine( area is another function that works) int square::plus(square sq) const { int plus = sq.area() + sq.area(); int area1 = sq.area(); int area2 = sq.area(); plus = area1 + area2; return plus; } //ok folks so below is the function we are trying to fix. //I have written how we filled it in the "what have you tried" section square square::avgSquare(square sq) const { }
Что я уже пробовал:
сначала мы закодировали, как получить среднее значение. И тут есть небольшое разногласие. Я покажу два способа, которыми, по нашему мнению, это должно быть сделано. Но мы не знали об ограничениях, наложенных на нас const
square square::avgSquare(square sq) const { //way one double Asq = round(plus(sq)/2); return Asq; //way two double Asq = round(sq.plus()/2); return Asq; return sq.plus()/2; }