设置比较器类型预期错误

时间:2010-11-01 02:21:20

标签: c++ templates stl set

对不起,伙计们,如果这是一个愚蠢的问题。我有一组整数,我希望使用函数对象进行排序。但是当我尝试编译以下代码时,我收到错误“'_Pr'的无效模板参数,预期类型”。
    


    class MySortedUser{
    vector < user* > & users;
    public:
 MySortedUser(vector < user* > & _users):users(_users)
 {
 }
 bool operator()(const int& A, const int& B) const
 {
  return (users[A]->username < users[B]->username);
 } 
   };
    void someFunction(vector < user* > & _users)
    {
      set< int, MySortedUser(_users) > MySet;  //error here
    }

你能否告诉我我做错了什么。

1 个答案:

答案 0 :(得分:1)

MySortedUser(_users)是一个表达式(它创建一个MySortedUser对象)。该对象在运行时构造。模板需要在编译时实例化

您需要将std::set类型作为模板参数,并将构造的比较器作为构造函数参数:

std::set<int, MySortedUser> MySet(MySortedUser(_users));