使用参数的 getter 之一来设置 C++ 中另一个参数的值;功能?

发布于 2024-11-30 16:04:05 字数 296 浏览 1 评论 0原文

在 C++ 函数中,我可以使用其中一个参数的 getter 来设置其后面的另一个参数的默认值吗?例如,如果我有以下类 Foo,

class Foo{
   public:
      setID();
      getID();
   private:
      string id;
}

我可以编写这样的函数 fooManipulator 吗?

int fooManipulator(Foo bar, string id = bar.getId());

In a C++ function, can I use one of the parameter's getter to set the default value of the other parameter following it? For example if I have the followig class Foo,

class Foo{
   public:
      setID();
      getID();
   private:
      string id;
}

Can I write a function fooManipulator like this,

int fooManipulator(Foo bar, string id = bar.getId());

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

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

发布评论

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

评论(2

○闲身 2024-12-07 16:04:05

不,正如已经说过的,函数参数的求值顺序是未指定的。

但是,您可以通过如下重载轻松实现效果:

int fooManipulator(Foo bar)
{
    return fooManipulator(bar, bar.getId());
}

No, as has been stated, the order of evaluation of arguments to a function is unspecified.

However, you can achieve the effect easily with an overload like this:

int fooManipulator(Foo bar)
{
    return fooManipulator(bar, bar.getId());
}
佞臣 2024-12-07 16:04:05

不可以。您不能在默认参数中引用其他参数,因为函数参数的求值顺序未指定。

例如,在 fooManipulator 函数中,传递给参数 id 的参数可能会在传递给参数 bar 的参数之前求值。这可能会使参数 id 的默认参数中使用 bar 无效。

No. You cannot refer to another parameter in a default argument because the order of evaluation of function arguments is unspecified.

For example, in your fooManipulator function, the argument passed to parameter id may be evaluated before the argument passed to parameter bar. This could make invalid the use of bar in the default argument for parameter id.

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