• Advertisement
Sign in to follow this  

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

This topic is 4102 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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
Advertisement
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
Sign in to follow this  

  • Advertisement