C ++中的默认值取决于其他输入参数

时间:2016-07-01 10:05:18

标签: c++ default-value

在声明中看起来像这样的东西是不可能的:

void func(float a, int b=int(a+1)){/*do stuff*/}

基本上,我希望默认值b取决于a。除了重载func之外,还有适当的解决方法吗?

2 个答案:

答案 0 :(得分:5)

重载:一个函数只将a作为参数,然后又调用另一个传递两个参数的函数。

这样的东西
void func(float a, int b)
{
    // Do stuff...
}

void func(float a)
{
    func(a, static_cast<int>(a) + 1);
}

答案 1 :(得分:1)

你可以实现@ tobi303提到的内容。但是如果你真的想要2个独立的变量,你也可以实现以下内容:

void func(float a)
{
    int b = (int)a + 1;
    // Do stuff...
}

也可以进行重载:

void func(float a, int b)
{
    // Do stuff...
}

void func(float a)
{
    func(a, (int)a + 1);
}