2017-05-16 56 views
1

你好,我想知道如何對Tkey變量是指針類型的映射進行排序。 有getName函數返回char *類型。所以我試圖與strcmp進行比較。但是回報部分有一些錯誤。C++映射指針變量排序

struct Compare_P { 
    inline bool operator()(Person const& a, Person const& b) { 
     return (strcmp(a.getName(), b.getName())) < 0; 
    } 
    }; 
    map<Person*, House*, Compare_P>A_List; 
+8

'Compare_P'需要'運營商()修復'服用對人*'指針的',而不是(或除了)一個參考一對。你的地圖中的鍵是'Person *'類型;你需要一個能夠比較這些鍵的比較器,而不是其他類型的,儘管有關。 –

回答

2

map的關鍵是Person*,但Compare_P::operator()需要Person const&。您可以通過定義

map<Person, House, Compare_P> A_List; 

或正確Compare_P

struct Compare_P { 
    bool operator()(Person const* a, Person const* b) { 
    return (strcmp(a->getName(), b->getName())) < 0; 
    }