0

誰かが私の問題を解決するのを手伝ってくれることを願っていました。私は素敵な

タイプ「const pCompare」のオブジェクトの呼び出しに一致する関数がありません

struct pCompare
 {
    bool operator()( const std::string & str1, const std::string & str2 ) const
    {
        return str1.compare( str2 ) == 0;
    }
 };
 std::string *t = new std::string ( "/test.html" );
 std::map<std::string*, std::string, pCompare> test;
 test.insert ( std::pair<std::string*, std::string> ( t, "héhé" ) );
 std::cout << test.find(new std::string ("/test.html") )->second;

ご協力いただきありがとうございます !

4

1 に答える 1

4

まず第一に、これを行わないでください。マップが台無しになります。等価性テストではなく、マップの順序付け関数が必要です。

とにかく、あなたの問題はあなたのキータイプがstd :: string *であると思いますが、あなたの関数はstring&をテストします。私はこれを試していませんが、これでうまくいくはずです:

bool operator()( std::string * str1, const std::string * str2 ) const
{
    return *str1 < *str2;
}
于 2012-11-06T22:07:57.273 に答える