在c ++中修改库函数的最佳方法是什么?

时间:2014-10-23 15:13:41

标签: c++

如果我想确保传递给setX()方法的每个参数都是正数,那么最好的方法是什么?

例如:

 a.setX(32); // I don't need to worry about if 32 is less than 0
 if(a.getY()-64 > 0)
 {
     b.setX(a.getY()-64); // But I have to check if a variable will be less than 0
 }

我可以在setX()方法中通过在那里添加if语句进行一些更改吗?但修改第三方库中的功能不是一个好主意,是吗?有没有办法在不触及图书馆的情况下实现这一目标?

当然,每次调用此函数时,我都可以手动确保参数为正值。但这听起来更糟糕。我可能会非常频繁地调用这个函数,在调用这个函数之前,我不能每次都检查一下这个值。那么最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

为什么不简单地创建自己的函数并确保只调用此函数而不是原始函数:

inline void MySetX( TheClass& a, int value )
{
    if ( value >= 0 )
    {
         a.setX( value );
    }
    else
    {
         // Do your error handling, throw exception, assert, or whatever
    }
}

然后,将所有a.setX( i )替换为MySetX( a, i )