- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
luabind 文档说要从 C++ 调用 Lua 派生的虚拟成员,您可以创建一个派生自 luabind::wrap_base
的包装类,然后像这样调用该函数:
class BaseWrapper : public Base, public luabind::wrap_base
{
public:
virtual void foo()
{
call<void>("foo");
}
};
到目前为止一切顺利 - 我有这么多工作要做。
但是我如何实现 BaseWrapper::foo()
来调用重写的 foo
(在 Lua 端)作为协程(使用 resume_function
) 而不是直接用 call
调用它?
这是处理非成员函数的方式:
luabind::object func = luabind::globals(L)["bar"];
luabind::resume_function<void>(func);
我想我需要知道的是如何为 foo
获取 func
(由 Lua 派生类实现),然后是我现有的 resume_function
逻辑应该按原样工作。
最佳答案
所以我找到了这个问题的答案。似乎最简单的解决方案是在构造对象时从 Lua 传递 self
,然后从其表中查找函数:
在 C++ 方面:
BaseWrapper::BaseWrapper(luabind::object self) : _self(self)
{ }
virtual void BaseWrapper::foo()
{
luabind::object func = _self["foo"];
/* now put func in coroutine scheduler queue and when appropriate call:
luabind::resume_function<void>(func, _self);
*/
}
在 Lua 中:
class 'Derived' (Base)
function Derived:__init()
Base.__init(self, self) -- the second self is param to BaseWrapper()
end
function Derived:foo()
-- here is the target function
end
end
关于c++ - 调用 luabind 派生成员作为协程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6447714/
我刚刚开始使用 Luabind,并尝试运行在 http://www.rasterbar.com/products/luabind/docs.html#calling-lua-functions 指定的
我在理解如何通过 luabind 正确使用协程时遇到一些问题。有一个模板函数: template Ret resume_function(object const& obj, ...) 其中 (Ret
我对 Luabind 包装器如何在没有 lua_State *L 的情况下传递函数感兴趣。并且不使用 Lua 堆栈。 Luabind 如何: 计算函数参数? 将函数参数链接到 Lua 堆栈? 链接这些
我有一个 C++ 类,我想通过全局变量在 lua 脚本中授予访问权限,但是当我尝试使用它时,出现以下错误: terminate called after throwing an instance of
我在使用 luabind 时遇到了问题。我定义了一个 std::map 来分配在 lua 中创建的对象。我以这种方式将这张 map 发布为 lua 中的全局对象: luabind::globals(L
在一个名为 Test_Class 的类中,我有一个函数: shoot_a_bullet(int damage) { cout > x; lua_State *myLuaState =
我在 Lua 中创建表并将它们存储为 Luabind 对象。然后,我希望调用存储在这些表之一中的函数,所以我会做这样的事情 data["onPrimaryFire"](player, x, y, a)
我最近一直在学习 Luabind,目的是将其集成到我们的软件中。我遇到了几个问题,我一直在查看 Luabind 的 Rasterbar 软件文档,但未能解决。基本上,我公开了一个以字符串和抽象基类作为
我想创建一个具有动态属性的类。例如: class MyClass { public: int GetValue(string str) { return smap[st
我想问一个关于其中发生的特定事件的问题,而无需深入探讨我正在从事的大型 multimap 书馆项目的太多无关细节。我正在使用 Luabind 使我的 C++ 代码与我的 Lua 代码接口(interf
我正在尝试从类中导出静态字段: class Foo { const static int Var; }; // luabind module: .def_readonly("Var", &Foo
我试图在 Visual Studio 2010 中使用 Lua + Luabind 制作一些 HelloWorld。我从 here 下载了 Lua src。并将其源文件添加到项目中。然后我下载并添加了
我使用的是来自 Ryan Pavlik 主发行版的 luabind 0.9.1 和 Lua 5.1,Win XP SP3 上的 cygwin + 最新补丁 x86,boost 1.48,gcc 4.3
我目前在使用 Luabind 将 Lua 脚本 AI 与 C++ 游戏交互时遇到问题。 我在一个循环中调用一个更新函数(每帧一次),这个函数从 Luabind 中注册的 C++ 函数中检索信息。 我的
我正在尝试为我的项目编译 Luabind,但收效甚微。我有 lua 目录(包含 src、makefile 等)作为 luabind 的兄弟。我将 LUA_PATH 设置为/my/dirs/lua 文件
我有一些使用 Luabind 的代码,如果它存在于 _G 表中,我需要执行一个函数(来自 C++),否则什么都不做。如何检测_G中是否存在函数? 最佳答案 这样的事情应该工作: if (luabind
我想向 Lua 等公开 Java 类。对于 C/C++,有 luabind 项目。但我还没有找到 Java 的类似内容。Java 有没有类似 luabind 的项目? 最佳答案 也有一些可用于 JAV
如何追踪我的合规订单? (这样我就可以重新订购) 我的问题:我正在运行 Visual Studio 2012 编写 C++ 应用程序。我使用 LuaBind 将脚本系统 Lua 绑定(bind)到我的
我正在学习 luabind 并尝试使用 luabind::object 从 C++ 访问 Lua 中的变量。 当我将一个 int 分配给一个“对象”时,编译失败了。 代码: int main() {
luabind 文档说要从 C++ 调用 Lua 派生的虚拟成员,您可以创建一个派生自 luabind::wrap_base 的包装类,然后像这样调用该函数: class BaseWrapper :
我是一名优秀的程序员,十分优秀!