К сожалению,
std::map
не перегружен const
оператором []
. Это потому, что всякий раз, когда вы получаете доступ к ключу, который не существует, карта создает для него элемент; если бы карта была const
, это было бы невозможно. Следовательно, нет возможности назвать его постоянной картой. Это не связано с поведением вашего UnitSet
класса.
Вам нужно будет использовать myMap.find(TKey)
, чтобы получить итератор для вашего элемента, который возвращает myMap.end()
, если он не может его найти.
Итераторы карты указывают на std::pair
вашего ключа и значения, поэтому вам необходимо получить доступ к члену second
, чтобы получить ваше значение (first
является ключом).
const UnitSet& reference = myMap.find("l")->second;