Мне показали, как создать неровную многомерную std::map
с помощью boost::any
.
Однако у меня возникают проблемы с установкой значений, как в этом ответе.
Когда я использую
accounts["bank"]["cash"] = 100;
gcc
выдает эту ошибку
error: no match for ‘operator[]’ in ‘accounts.std::map<_Key, _Tp, _Compare,
_Alloc>::operator[]<std::basic_string<char>, boost::any,
std::less<std::basic_string<char> >, std::allocator<std::pair<const
std::basic_string<char>, boost::any> > >((* & std::basic_string<char>(((const
char*)"bank"), (*(const std::allocator<char>*)(& std::allocator<char>())))))["cash"]’
Как можно получить доступ к зубчатому многомерному map
, созданному с помощью boost::any
? (Если есть лучший способ сделать это, покажите мне, пожалуйста. Меня волнует только то, что работает, и я быстро пишу.)
многомерное объявление
std::map<std::string, boost::any> accounts;
accounts["bank"] = std::map<std::string, boost::any>();
accounts["bank"]["cash"] = 100;
Я сдался и попытался использовать json-spirit mObject
вместо этого, поскольку все это кажется уже встроенным.
Забавно то, что с теми же обозначениями я получаю точно такую же ошибку.