通过Luabind将STL队列暴露给Lua

我正在尝试使用STL队列类来替换用Lua写的现有队列类的实现。我不确定为什么会失败,或者如何解决它。下面是一些展示相同行为的示例代码,以及错误输出。提前感谢!

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

点赞
stackoverflow用户734069
stackoverflow用户734069

这个:

class_("XYZ_QUEUE_T")

应该改为:

class_<XYZ_QUEUE_T>("XYZ_QUEUE_T")

字符串是 Lua 看到的类型名,而模板参数是你使用的 C++ 类型。

哦,如果你不暴露队列存储的对象,将队列公开给 Lua 是徒劳的。

2011-07-06 22:58:05
stackoverflow用户298661
stackoverflow用户298661

很可能,在您的队列实现中有一个重载的函数。因此,当您取地址时,编译器不知道该怎么做,因为您可能会指的是任何重载的函数。

2011-07-06 23:35:53
stackoverflow用户168225
stackoverflow用户168225

正如DeadMG所指出的,在函数重载的情况下,你必须告诉编译器选择哪个版本,例如对于const版本:

typedef const XYZ_QUEUE_T::value_type& (XYZ_QUEUE_T::*ConstRefConstType)() const;

class_<XYZ_QUEUE_T>("XYZ_QUEUE_T")
    // ...
    .def("front", (ConstRefConstType)&XYZ_QUEUE_T::front)
    .def("back" , (ConstRefConstType)&XYZ_QUEUE_T::back)
    // ...

luabind文档包括这方面的一个例子

2011-07-07 09:01:55