有没有办法拥有动态默认参数?

发布于 2024-12-08 19:21:14 字数 571 浏览 0 评论 0原文

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

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

有没有更好的方法,或者我是否坚持这个“黑客”解决方案?

I'm trying to make a class where the user can modify member variables to change the default arguments of its member functions.

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

My workaround so far has been to use magic numbers, which obviously isn't ideal.

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

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

Is there a better way, or am I stuck with this "hack" solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痴骨ら 2024-12-15 19:21:14

是的,忘记默认参数。

class Class
{
    public int Member;

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

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

这里不需要诡计。

Yep, forget about the default argument.

class Class
{
    public int Member;

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

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

No need for trickery here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文