C ++ boost :: bimap insert () метод не работает - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь вставить данные в boost :: bimap, но выдает ошибку.

typedef boost::bimap<std::string, std::string> bimap_type;
bimap_type _obs_ids;

void store_domains_obs_ids(const std::string & name, const std::string & obs_id) const
{
    _obs_ids.insert(bimap_type::value_type(name, obs_id));
}

Error ::

no instance of overloaded function "boost:thimaps::bimap<KeyTypeA, KeyTypeB, AP1, AP2, AP3>::insert [with KeyTypeA= std::string, KeyTypelhstd::string, AP1=boost::mpl::na, AP2= boost::mpl::na, AP3= boost:mph:na]" matches the argument list and object (the object has type qualifiers that prevent a match) argument types are: (boostthimapsuelation::mutant_relation<boostthimaps::tags::tagged<const std::string, boost:thimapsuelation::member_athleft>, boost::bimaps::tags::tagged<const std::string, boostthimapsuelation::member_athright>, boost::mpl::na, false>) object type is: const ipm::config::bimap_type

1 Ответ

0 голосов
/ 03 июля 2019

Вы должны удалить const из сигнатуры функции-члена:

void store_domains_obs_ids(const std::string & name, const 
std::string & obs_id) const
{}

должно быть

void store_domains_obs_ids(const std::string & name, const 
std::string & obs_id) 
{}

внутри const функция-член, _obs_ids обрабатывается как объект const, для объектов const можно вызывать только const членов функции. Поскольку insert изменяет экземпляр bimap, вы можете вызывать эту функцию только из неконстантной функции.

...