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

Sem*_*exB 1 c++ default-value

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

void func(float a, int b=int(a+1)){/*do stuff*/}
Run Code Online (Sandbox Code Playgroud)

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

Som*_*ude 5

重载:一个函数仅a作为参数,它又调用另一个传递两个参数的函数.

就像是

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

void func(float a)
{
    func(a, static_cast<int>(a) + 1);
}
Run Code Online (Sandbox Code Playgroud)

  • @AnandS C风格的强制转换可能很危险,使用[`static_cast`](http://en.cppreference.com/w/cpp/language/static_cast)将让编译器检查强制转换是否可行.在这样一个简单的情况下它并不重要,但使用[`static_cast`](http://en.cppreference.com/w/cpp/language/static_cast)而不是C风格的演员表或函数风格演员(例如`int(a)`)到处都是一个好习惯,应该保持良好的习惯,或者不再是习惯. (3认同)