我正在编写一个以两个不同的公差值作为参数的近似函数:
bool Approximate(vector<PointC*>* pOutput, LineC input, double horizontalTolerance, double verticalTolerance)
如果未设置verticalTolerance,我希望该函数设置verticalTolerance = HorizontalTolerance。所以,我想完成类似的事情:
bool Approximate(vector<PointC*>* pOutput, LineC input, double horizontalTolerance, double verticalTolerance=horizontalTolerance)
我知道这是不可能的,因为不允许局部变量作为默认参数。所以我的问题是,设计这个功能的最佳方式是什么?
我想到的选项是:
不要使用默认参数并让用户明确设置两个公差。
将verticalTolerance的默认值设置为负值,如果为负,则重置为horizontalTolerance:
bool Approximate(vector<PointC*>* pOutput, LineC input, double horizontalTolerance, double verticalTolerance=-1) { if (verticalTolerance < 0) { verticalTolerance = horizontalTolerance; } // Rest of function }
在我看来,第一点不是解决方案而是绕过,第二点不可能是最简单的解决方案。