【问题标题】:How to set a default parameter for a vector <string> for use in a default constructor within a class?如何为矢量 <string> 设置默认参数以在类中的默认构造函数中使用?
【发布时间】:2010-12-23 16:17:17
【问题描述】:

例如,一个名为 Table 的类,其构造函数为: Table(string name="", vector &lt;string&gt; mods);

如何将向量初始化为空?

编辑: 忘了说这是 C++。

【问题讨论】:

  • 我猜这是C++?

标签: c++ string parameters vector constructor


【解决方案1】:
Table(string name="", vector <string> mods);

如果你想让向量在构造函数中为空,那么

mods.clear();

mods.swap(vector<string>());

如果你想作为默认参数:

 Table(string name="", vector<string> mods = vector<string>());

与任何其他默认参数一样。

【讨论】:

  • 啊谢谢!我一直在尝试诸如 vector mods(0,"") 和许多其他变体之类的东西。根本没想到!
  • 在编辑之前捕获了您的消息,此方法有效 vector mods = vector() 并且只是 vector mods = vector() 抱怨需要模板参数。我很高兴看到第一条消息,因为我可能不会想到将模板参数放在赋值的两边。
  • 如果您希望您的论点 vector&lt;string&gt; mods 属于 reference,那么在这种情况下您必须使用 const,因为 C++ 不允许将临时变量与reference.
【解决方案2】:

补充另一个答案:如果您使用的是 c++11,则可以使用通用初始化语法将向量的默认参数声明缩短为以下内容:

Table(string name="", vector<string> mods={});

【讨论】:

  • 比其他选项更好。
猜你喜欢
  • 2016-11-03
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 2017-11-21
  • 2012-06-30
  • 1970-01-01
  • 2017-07-07
相关资源
最近更新 更多