抱歉,如果这是一个愚蠢的问题。我有一组要使用函数对象排序的整数。但是,当我尝试编译以下代码时,出现错误“'_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));

10-06 11:30