Luabind:std :: map的return_stl_iterator

时间:2011-07-21 14:42:01

标签: c++ lua luabind

有没有办法将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()都在工作......)

2 个答案:

答案 0 :(得分:2)

浏览源代码后,我发现Luabind return_stl_iterator策略仅支持直接引用所需数据类型的迭代器。不支持关联容器的迭代器(永远不会访问firstsecond。)

答案 1 :(得分:2)

也许“未注册的班级”是std::pair<const std::string, int>。您可以尝试使用Luabind进行注册,看看它是否有用吗?

相关问题