繁体   English   中英

如何检查一个模板是否是另一个模板的 class 成员

[英]How to check if a template is a class member of another template

我制作了一个 function 按成员(例如按年龄或姓名的学生)对我的矢量进行排序所以我制作了一个模板 function

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是否为具有成员的 class,以及我的ElemMember是否为该 class 的成员。

使用指向ElemType的数据成员的指针作为sort的参数应该足够了:

template <typename ElemType, typename MemberType>
void sort(std::vector<ElemType>& vec, MemberType ElemType::*member, bool ascending = true)
//                                    ~~~~~~~~~~~~~~~~~~~~~^

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM