2017-01-19 27 views
0

第3引数のみを使用するにはどうすればよいですか?このよう関数のデフォルト引数を1つだけ使用するC++

:あなたが現在何をしたいのかをサポートしていません++

double func(const double c = 7, const double a = 5, const double b = 6); 
+6

をあなたがすることはできません。 C++はこのように動作しません。 –

+0

これを行うことができたとしても、3番目のパラメータだけを使用したい場合、 'a'と' b'はデフォルトになりますか? – PaulMcKenzie

答えて

0

これを行うための唯一の方法は、引数の順序を入れ替えることであろう。しかし、そこには方法があります。 Named Parameter IdiomまたはブーストのParemeter libraryを使用できます。

前者をお勧めします。それはあなたが(おそらく)いくつかのラッパー型を使用し、過負荷にでき...など、

2

C:

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

、より明確なデバッグが簡単だし、呼び出すときに、パラメータに名前を付けるタイプを使用します。

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}); 
} 
関連する問題