有没有办法获得动态默认参数?

时间:2011-10-10 14:01:10

标签: parameters d member-functions member-variables default-arguments

我正在尝试创建一个用户可以修改成员变量的类,以更改其成员函数的默认参数。

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 个答案:

答案 0 :(得分:7)

是的,忘掉默认参数。

class Class
{
    public int Member;

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

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

这里不需要诡计。