Sign in to follow this  
littlekid

How to use a own comparing Function in std::map

Recommended Posts

Here is what i tried and it gave me an error:

struct KEY
{
    int ID;
    int Format;
};

struct KEYCOMPARE
{
    bool operator()(const KEY &Key1, const KEY &Key2)
    {
        if (Key1.ID < Key2.ID)
             return true;
    };
};

map<KEY, CObject*, KEYCOMPARE> ObjectMap;

It compiles alright in debug mode. However in release mode, it gives the following error: \Microsoft Visual Studio 8\VC\include\xtree(1174) : error C3848: expression having type 'const KEYCOMPARE' would lose some const-volatile qualifiers in order to call 'bool KEYCOMPARE::operator ()(const KEY &,const KEY &)'

Share this post


Link to post
Share on other sites
Try:
struct KEYCOMPARE
{
bool operator()(const KEY &Key1, const KEY &Key2) const
{
if (Key1.ID < Key2.ID)
return true;
};
};
Now operator()() can be called on constant references to objects of type KEYCOMPARE.

[Edited by - jyk on November 26, 2006 1:02:25 AM]

Share this post


Link to post
Share on other sites
Quote:
Original post by RDragon1
holy unreadable colors batman!
Ouch, you're right! I forgot that not everyone uses the 'classic black' theme (:-|

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this