无法将 const char 转换为构造字符串的字符串 [重复]
Posted
技术标签:
【中文标题】无法将 const char 转换为构造字符串的字符串 [重复]【英文标题】:Cannot convert const char to string constructing string [duplicate] 【发布时间】: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 仅列出了一个更复杂的示例,并不意味着该术语也不涵盖更简单的示例。
【参考方案1】:
因为
std::string f();
声明一个函数f
,它不接受任何参数并返回一个字符串。它通常(但被错误地)称为最令人头疼的解析。
【讨论】:
托尼·德尔罗伊是对的。以上是关于无法将 const char 转换为构造字符串的字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
无法将字符串转换为 const char/string* 到 int*
将 Swift 字符串数组转换为 const char * const *