大家好,我目前正在编写一个可更改边框颜色的函数。

void ChangeColor(D3DXVECTOR4 xColorLeft, D3DXVECTOR4 xColorRight, D3DXVECTOR4 xColorTop, D3DXVECTOR4 xColorBot);

现在一切都很好,但是我想让我的用户更易于使用,例如,如果ChangeColor用NULL值调用,它不会改变任何内容。

例:

ChangeColor(D3DXVECTOR4(0.0f, 0.0f, 0.0f, 1.0f), NULL, NULL, NULL);

通过此函数调用,我将更改左边框的颜色,但是由于在其他边框上调用了NULL,因此我将其保留为默认值。当我尝试此调用时,出现有关包含ints的重载方法的错误。

如果不使用任何方法,例如ChangeColorLeft等,这是否可能?如果是这样,我该怎么做?

先感谢您。

最佳答案

令人高兴的是,D3DXVECTOR4是一组四个浮点数,它们支持NAN等魔术值。那么呢:

const D3DXVECTOR4 NoColor(NAN, NAN, NAN, NAN);
void ChangeColor(
    D3DXVECTOR4 xColorLeft = NoColor,
    D3DXVECTOR4 xColorRight = NoColor,
    D3DXVECTOR4 xColorTop = NoColor,
    D3DXVECTOR4 xColorBot = NoColor);


然后,您只需检查内部是否每个参数都是NAN,如果是,就不要更改该参数。

关于c++ - 函数参数:也接受空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19834705/

10-11 05:53