解决
谢谢,我使用了David Schwartz的答案并解决了这个问题。以下是我可以使用的代码。
我原来的问题是如何对一对矢量进行排序,我从这里得到答案:
Sorting a std::vector<std::pair<std::string,bool>> by the string?
然后我想在我的库my_lib.hpp中保留这个方法,以便我可以在需要时使用它,并且我想尝试为它制作模板。
以下是我的设置,我的问题是我在eclipse中得到了这个错误
未定义引用
void haha::pair_sort_second_dec<std::pair<int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::vector<std::pair<int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&)
main.cpp /问题行406 C / C ++问题
my_lib.hpp
namespace haha{
template <class T>
bool pairCompare_dec(const T& , const T& );
template <class T>
void pair_sort_second_dec(std::vector<T>& );
template <class T>
bool pairCompare_dec(const T& firstElem,const T& secondElem) {
return firstElem.second > secondElem.second;
}
template <class T>
void pair_sort_second_dec(std::vector<T>& target){
std::sort(target.begin(),target.end(),pairCompare_dec<T>);
}
};
的main.cpp
#include "my_lib.hpp"
int main(int argc,char* argv[]){
std::vector<std::pair<int,std::string> > test;
// initial test
haha::pair_sort_second_dec(test);
return 0;
}
任何人都知道如何修复它?在此先感谢。
答案 0 :(得分:2)
std::sort(target.begin(),target.end(),pairCompare_dec);
应该是:
std::sort(target.begin(),target.end(),pairCompare_dec<T>);