5

ユーザーがメンバー変数を変更して、そのメンバー関数のデフォルトの引数を変更できるクラスを作成しようとしています。

class Class
{
    public int Member;

    public void Method(int Argument = Member)
    {
        // This compiles fine, until I try to actually use
        // the method elsewhere in code!

        // "Error: need 'this' to access member Member"
    }
}

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

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

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

より良い方法はありますか、それとも私はこの「ハック」ソリューションに固執していますか?

4

1 に答える 1

7

はい、デフォルトの引数を忘れてください。

class Class
{
    public int Member;

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

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

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

于 2011-10-10T14:33:31.653 に答える