错误:没有匹配函数来调用&#39; sort(...,...,<unresolved overloaded =“”function =“”type =“”>)&#39; </unresolved>

时间:2014-05-21 16:58:17

标签: c++

我声明然后定义一个执行比较的函数:

  template <class KEY, class VALUE>      
  bool compareFlatMapElements(
              typename SortedPairsVector<KEY, VALUE>::ElementType& first, 
              typename SortedPairsVector<KEY, VALUE>::ElementType& second);
        // Compares the specified 'first' and 'second' using
        // 'bsl::less<KEY>' to compare the values stored in 'first()' of
        // each pair held by the 'FlatMap_Element.

  template <class KEY, class VALUE>
  inline
  bool compareFlatMapElements(
              typename SortedPairsVector<KEY, VALUE>::ElementType& first, 
              typename SortedPairsVector<KEY, VALUE>::ElementType& second)
  {
      return first.data().first < second.data().first;
  }

然后我尝试在排序中使用它

      std::sort(d_data.begin(), d_data.end(), compareFlatMapElements);

导致以下错误的原因是什么?如何解决?

error: no matching function for call to 'sort(..., ..., <unresolved overloaded function type>)'

1 个答案:

答案 0 :(得分:5)

没有模板参数,没有免费的常备功能compareFlatMapElements

如果d_data的密钥类型为Key且值类型d_dataValue

使用

std::sort(d_data.begin(), d_data.end(), compareFlatMapElements<Key, Value>);