你可以(可能)使用一些包裝類型和超載,然後使用類型來命名參數調用時:
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});
}
你不能。 C++不能以這種方式工作。 –
即使你可以這樣做,如果你只想使用第三個參數,那麼'a'和'b'會被默認爲什麼? – PaulMcKenzie