2016-12-24 2 views
1

Есть ли способ передать индекс std :: map в качестве параметра для функции const?Возвращение значения std :: map через индекс параметра внутри функции const

const SurfaceProperties & SurfacePropertiesImpl::getSurfaceProperties(const std::string entityId) const 
{ 
    return mSurfaceProperties[entityId]; 
} 

-

error: passing ‘const std::map<std::__cxx11::basic_string<char>, SurfaceProperties>’ as ‘this’ argument discards qualifiers [-fpermissive] 
    return mSurfaceProperties[entityId]; 

ответ

2

Вы можете использовать at, который сопз вопреки operator[]

const SurfaceProperties& 
SurfacePropertiesImpl::getSurfaceProperties(const std::string entityId) const 
{ 
    return mSurfaceProperties.at(entityId); 
} 

Он кидает, если ключ не найден.

Смежные вопросы