抱歉,如果这是一个愚蠢的问题。我有一组要使用函数对象排序的整数。但是,当我尝试编译以下代码时,出现错误“'_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 }
你能告诉我我在做什么错。
最佳答案
MySortedUser(_users)
是一个表达式(它创建一个MySortedUser
对象)。在运行时构造对象。模板需要在编译时实例化。
您需要给std::set
类型作为模板参数,并将构造的比较器作为构造函数参数:
std::set<int, MySortedUser> MySet(MySortedUser(_users));