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 回答