有没有办法将STL迭代器返回std::map
(例如std::map<const std::string, int>
)?
示例类的Luabind定义:
class_<SomeClass>( "SomeClass" )
.property( "items", &SomeClass::GetItems, return_stl_iterator )
GetItems()
返回对std::map
容器的const引用。
在Lua中访问它时:
for item in some_class.items do
...
end
Luabind抛出一个std :: runtime_error,说“试图使用未注册的类”。迭代std::map
是不可能的? (文档说明所有容器begin()
和end()
都在工作......)
答案 0 :(得分:2)
浏览源代码后,我发现Luabind return_stl_iterator策略仅支持直接引用所需数据类型的迭代器。不支持关联容器的迭代器(永远不会访问first
和second
。)
答案 1 :(得分:2)
也许“未注册的班级”是std::pair<const std::string, int>
。您可以尝试使用Luabind进行注册,看看它是否有用吗?