在声明中看起来像这样的东西是不可能的:
void func(float a, int b=int(a+1)){/*do stuff*/}
基本上,我希望默认值b
取决于a
。除了重载func
之外,还有适当的解决方法吗?
答案 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);
}