2010-11-01 56 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));