【问题标题】:How to implement unnamed parameters如何实现未命名参数
【发布时间】:2015-05-15 14:16:25
【问题描述】:

我有一个问题。

void setName(const string&);

如何实现上面的代码?我需要写this.name = ... 但没有命名变量。只有& 符号。

【问题讨论】:

  • 是什么阻止你添加一个?
  • 你只需在实现中给它一个名字:void setName(const string& s) { /* .... */ }
  • 因为我有一个头文件,我不能改变它。
  • @AnılA 那你就是 SOL,因为如果它没有名字,你就不能使用它。您是否能够修改该功能的 cpp 实现?您可以在那里为变量命名。它不必与标题匹配。
  • 他可以在定义中简单地命名。但是,他的限制显然是愚蠢的,过于局部化。此外,他在 C++ 中使用 this.name 也不会走得太远

标签: c++ parameter-passing


【解决方案1】:

您不需要在函数原型中包含显式参数名称。事实上,有些程序员故意省略了它们。

只有当您定义一个函数时,您才需要提供参数名称,并且只有当您真正引用该参数时。

所以在标题中,void setName(const string&); 很好。这告诉您该函数引用了 string& 表示引用),并且不返回任何内容。

但是当你定义函数时,如果你引用它,你需要提供一个参数。

【讨论】:

    【解决方案2】:

    你的头文件有这个...

    class MyClass
       {
       string name;
    public:
       void setName(const string&);
       };
    

    你的实现文件可以有这个...

    void MyClass::setName(const string& s )
       {
       this->name = s;
       }
    

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 2022-01-04
      • 2021-05-13
      • 2021-01-08
      • 2022-07-06
      • 2016-07-26
      相关资源
      最近更新 更多