5

私は、メンバー変数を変更してメンバー関数のデフォルト引数を変更できるクラスを作成しようとしています。動的なデフォルト引数を使用する方法はありますか?

私の回避策はこれまでマジックナンバーを使用することでしたが、これは明らかに理想的ではありません。

public void Method(int Argument = 123) 
{ 
    int RealArgument; 

    if (Argument == 123) RealArgument = Member; 
    else RealArgument = Argument; 
} 

もっと良い方法がありますか、この「ハック」解決策に固執していますか?

答えて

7

はい、デフォルトの引数については忘れてしまいます。

class Class 
{ 
    public int Member; 

    public void Method(int Argument) 
    { 
     ... 
    } 

    public void Method() 
    { 
     Method(Member); 
    } 
} 

ここでトリックは必要ありません。

+0

これは多くの議論では実用的ではないかもしれませんが、mixinはコードを自動的に生成するのに役立ちます。 – Maxpm

+0

バリデーショナルテンプレートと慎重な命名法を使用すると、基本関数と単一のラッパーテンプレートだけでその効果を得ることができます。 – BCS

関連する問題