Я пишу функцию приближения, принимая два различных значения допуска в качестве параметров:Лучший дизайн, чтобы избежать «локальной переменной как параметра по умолчанию»?
bool Approximate(vector<PointC*>* pOutput, LineC input, double horizontalTolerance, double verticalTolerance)
Я хочу, чтобы функция установить verticalTolerance = horizontalTolerance если verticalTolerance не установлен. Итак, я хочу сделать что-то вроде:
bool Approximate(vector<PointC*>* pOutput, LineC input, double horizontalTolerance, double verticalTolerance=horizontalTolerance)
Я знаю, что это невозможно, потому что local variables are not allowed as default parameters. Поэтому мой вопрос в том, как лучше всего разработать эту функцию?
варианты я думал, являются:
Не используйте параметр по умолчанию и сделать пользователю установить оба допуски в явном виде.
Установленное значение по умолчанию verticalTolerance до отрицательного значения и сбрасывается в horizontalTolerance если отрицательна:
bool Approximate(vector<PointC*>* pOutput, LineC input, double horizontalTolerance, double verticalTolerance=-1) { if (verticalTolerance < 0) { verticalTolerance = horizontalTolerance; } // Rest of function }
на мой взгляд, одна точка не является решением, но обойти, и точка два не может быть простейшее решение.
Возможно использование перегрузки функций – marcinj