【问题标题】:C++ list::sort <unresolved overloaded function type>C++ list::sort <未解析的重载函数类型>
【发布时间】:2016-11-29 07:45:51
【问题描述】:

我在使用 c++ 时遇到问题,尝试使用我自己的函数对播放列表进行排序,但它不起作用。我查看了许多关于可能存在类似问题的帖子,但找不到任何解决方案。 (c++ - <unresolved overloaded function type> -- 我遇到了与这篇文章中相同的错误,但不知道该怎么做)。

请给个提示好吗? :) 这是我的比较函数,comp只是比较小写的字符串。

bool Playlist::byTitleAscend (Music *a, Music *b) { return comp(a->getTitle(), b->getTitle()); }

然后我尝试用它对我的列表进行排序,它会抛出一个错误:/

_musics.sort(byTitleAscend); // ERROR, TODO: why ? 

我希望它足够清楚!

在文档中他们使用 const & 但也有人说如果我们不更改对象就没有必要。

错误:

MusicReader/playlist.cpp:148:错误:没有匹配的函数调用“std::list(Music*)::sort(未解决的重载函数类型)” _musics.sort(byTitleAscend);

我将

【问题讨论】:

  • 请复制并粘贴实际的错误文本。对我来说看起来很奇怪的一件事是compared with the documentation,您使用Music *a, Music *b 作为参数而不是Music const *a, Music const *bMusic const &amp;a, Music const &amp;b - 如果没有看到_musics 的声明,我不能说哪个。
  • 我怀疑byTitleAscend 不是静态的。
  • 是的,谢谢,现在可以使用了!

标签: c++ list


【解决方案1】:
_musics.sort(byTitleAscend);

行应该在播放列表类范围内。如果不是,则该行应该是

_musics.sort(Playlist::byTitleAscend);

【讨论】:

    【解决方案2】:

    实际上有几个错误, @cokceken 是对的,因为我忘了添加范围,而真正的问题是我也忘记了 comp 函数的范围..

    然后如果不将函数设置为静态,它也不能工作,所以也要感谢@molbdnilo!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多