【问题标题】:std::string s() strange behaviour [duplicate]std::string s() 奇怪的行为[重复]
【发布时间】:2013-05-28 10:17:52
【问题描述】:

我发现了一些我不明白的奇怪的东西。

std::string a();

打印出来时返回1。我不知道它是从哪里来的。我以为a() 是一个没有参数的构造函数,但看起来不是。

我在哪里可以找到这方面的信息?这是什么?

当试图做std::string b(a);编译器喊:

error: no matching function for call to ‘std::basic_string<char>::basic_string(std::string (&)())’

解释将不胜感激。

【问题讨论】:

  • 谷歌“c++ 最令人头疼的解析”。
  • 各位,投反对票是为了什么?答案是否如此明显,以至于当它咬你时,你们所有人都立即知道问题出在哪里?投票结束这个问题作为一个骗子很好,但我们不要因为不知道而拍打周围的人。
  • @Jon: 也许对某些人来说(包括我,因为我有一个类似的错误消息显示它是一个函数(指针),就像帖子中的错误一样。有时阅读错误很有用),但我个人会说它大多没有显示任何研究工作。
  • @PlasmaHH:恕我直言,如果您没有合理的经验,错误消息将毫无用处,大多数得到此错误消息的新手都没有战斗机会。也就是说,我尊重你的意见(特别是因为你花时间解释它!)如果我发现 jaor 有不研究的习惯,我不会发表评论。事实上,我认为有理由让他们受益于怀疑。

标签: c++ string


【解决方案1】:

这是一个函数声明,不是字符串实例化:

std::string a();

它声明了一个名为a的函数,没有参数,并返回一个std:string。这些是实例化:

std::string a;   // C++03 and C++11
std::string b{}; // C++11 syntax

【讨论】:

    【解决方案2】:
    std::string a();
    

    声明一个没有参数和std::string作为返回类型的函数。当您尝试打印它时,您会打印地址,其值为true

    警告:'std::string a()' 的地址将始终评估为'true' [-Waddress]

    【讨论】:

      猜你喜欢
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      相关资源
      最近更新 更多