【问题标题】:Cannot convert const char to string constructing string [duplicate]无法将 const char 转换为构造字符串的字符串 [重复]
【发布时间】:2018-02-17 06:13:05
【问题描述】:

为什么会这样

auto f = std::string();
f = "src.Id";

但这不是

std::string f();
f = "src.Id";

【问题讨论】:

  • 在 C++ 中查找“最令人头疼的解析”。
  • 我希望人们不要把这个简单的案例称为最令人头疼的解析。这是最烦人的解析en.wikipedia.org/wiki/Most_vexing_parse
  • 可以说,您目前遇到的任何令人头疼的解析都是最令人头疼的解析。 :)
  • 如果您使用较新的语法std::string f{};,它不会将f 视为返回std::string 的函数的声明。
  • @john:也许你应该纠正 Scott Meyers(这个词的发明者)——参见他的评论 “Widget w3(); // 最令人头疼的解析!声明一个函数!”here。仅仅因为 WIkipedia 仅列出了一个更复杂的示例,并不意味着该术语也不涵盖更简单的示例。

标签: c++


【解决方案1】:

因为

std::string f();

声明一个函数f,它不接受任何参数并返回一个字符串。它通常(但被错误地)称为最令人头疼的解析。

【讨论】:

  • 托尼·德尔罗伊是对的。
猜你喜欢
  • 1970-01-01
  • 2020-05-08
  • 2013-07-25
  • 2014-05-16
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
相关资源
最近更新 更多