Есть ли способ иметь динамические аргументы по умолчанию? - PullRequest
5 голосов
/ 10 октября 2011

Я пытаюсь создать класс, в котором пользователь может изменять переменные-члены для изменения аргументов по умолчанию своих функций-членов.

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;
}

Есть ли лучший способ, или я застрял с этим "взломать" решение?

1 Ответ

7 голосов
/ 10 октября 2011

Да, забудьте об аргументе по умолчанию.

class Class
{
    public int Member;

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

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

Здесь не нужно обманывать.

...