2010-11-01 51 views
0

对不起,如果这是一个愚蠢的问题。我有一组整数,我想使用一个函数对象进行排序。但是,当我尝试编译下面的代码时,我得到错误“_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

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

你需要给std::set类型为模板参数和构造比较构造函数参数:

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