我如何只使用第三个参数(第一个和第二个参数必须是默认值)?
像这样:
double func(const double a = 5, const double b = 6, const double c = 7);
int main()
{
cout << "A = " << func(10) << endl << endl; //if i do like this, i'm using first argument, but not 3rd.
}
答案 0 :(得分:2)
C ++不支持您当前要执行的操作。但是,有很多方法可以解决它。您可以使用Named Parameter Idiom或提升Paremeter library。
我推荐前者。它更清晰,更容易调试等......
答案 1 :(得分:0)
执行此操作的唯一方法是交换参数顺序:
double func(const double c = 7, const double a = 5, const double b = 6);
答案 2 :(得分:0)
您可以(可能)使用一些包装类型并重载,然后在调用时使用类型命名参数:
struct A { double a; constexpr static double def = 5.0; };
struct B { double b; constexpr static double def = 6.0; };
struct C { double c; constexpr static double def = 7.0; };
double func(double a=A::def, double b=B::def, double c=C::def) { /* whatever */ }
double func(A a) { return func(a.a, B::def, C::def); }
double func(B b) { return func(A::def, b.b, C::def); }
double func(C c) { return func(A::def, B::def, c.c); }
int main()
{
func(A{3.0});
func(B{9.0});
func(C{12.0});
}