在boost python中使用map_indexing_suite包装字符串/ shared_ptr unordered_map

时间:2013-02-24 23:29:39

标签: c++ boost-python

我正在尝试使用boost python中的map_indexing_suite实用程序包装boost :: unordered_map。但是,无论何时我尝试这样做,我都会遇到错误

Error   26  error C2039: 'key_comp' : is not a member of 'boost::unordered::unordered_map<K,T>' c:\programming_libraries\cpp_libraries\boost_1_49_0\boost\python\suite\indexing\map_indexing_suite.hpp  155

这是我正在做的包装

class_<boost::unordered_map<std::string, boost::shared_ptr<Character::BaseCharacter> > >("BasePartyMemberMap")
                .def(map_indexing_suite<boost::unordered_map<std::string, boost::shared_ptr<Character::BaseCharacter> > >())
                ;

我假设这与unordered_map与shared_ptr一起使用有关。如果我使用std :: map它可以正常工作。我希望有人可以告诉我问题是什么,以及它是否可以解决。如果我可以避免它,我宁愿不把结构切换到std :: map。

1 个答案:

答案 0 :(得分:3)

Boost.Python在v.1.55之前不支持std :: unordered_map和移动语义(参见Boost版本1.55.0发行说明,“多索引容器”部分)。 因此,您可以使用最新版本或下一个版本中的一个: