对不起,伙计们,如果这是一个愚蠢的问题。我有一组整数,我希望使用函数对象进行排序。但是当我尝试编译以下代码时,我收到错误“'_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 }
答案 0 :(得分:1)
MySortedUser(_users)
是一个表达式(它创建一个MySortedUser
对象)。该对象在运行时构造。模板需要在编译时实例化。
您需要将std::set
类型作为模板参数,并将构造的比较器作为构造函数参数:
std::set<int, MySortedUser> MySet(MySortedUser(_users));