我做了一个按成员排序的函数(如按年龄或姓名排序的学生),所以我做了一个模板函数
template<class ElemType, class ElemMember>
void sort(vector<ElemType>& vec, ElemMember member, bool ascending = true)
{
for(int j = 0; j < vec.size()- 1; ++j)
for (int i = 0; i < vec.size() - j - 1; ++i)
if ((vec[i].*member < vec[i + 1].*member) ^ ascending)
swap(vec[i], vec[i + 1]);
}
我想添加约束条件,检查是否有 ElemType
是一个有成员的类,如果我的 ElemMember
是该类的成员。
使用指向 ElemType
的参数,作为 sort
,应该足够了。
template <typename ElemType, typename MemberType>
void sort(std::vector<ElemType>& vec, MemberType ElemType::*member, bool ascending = true)
// ~~~~~~~~~~~~~~~~~~~~~^