Luabind:为std::map返回return_stl_iterator

有没有办法返回一个 std::map (例如,std::map<const std::string, int>)的 STL 迭代器?

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() 的容器都可以工作...)

原文链接 https://stackoverflow.com/questions/6777887

点赞
stackoverflow用户683669
stackoverflow用户683669

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

2011-07-22 05:47:32
stackoverflow用户4323
stackoverflow用户4323

也许“未注册的类”是 std::pair<const std::string, int>。你能尝试使用 Luabind 注册它并查看是否可以工作吗?

2011-08-14 14:34:57