已经向我展示了如何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
,因为所有这些似乎都已经内置了。
有趣的是,使用完全相同的符号,我得到完全相同的错误。