C++ “error: passing ‘const std::map’ as ‘this’ argument of …”

string color::getColorText() const {
    return colors[cColortype];
}

The issue is that you’ve marked the function as const. The operator[] on std::map is marked as non-const, and cannot be used in a const function like this. You need to manually use std::map::find (or other mechanism) to search for the input type and handle the case where it’s not found.

If you’re using C++11, you can instead use std::map::at, which IS allowed to be used on a constant map, and throws an exception if the requested element is not present.

Leave a Comment