- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想创建一个具有动态属性的类。例如:
class MyClass
{
public:
int GetValue(string str)
{
return smap[str];
}
void SetValue(string str, int i)
{
smap[str] = i;
}
private:
std::map<string, int> smap;
};
如何使用 luabind 或 mluabind 将此类绑定(bind)到 lua 以在 lua 中使用,如下所示:
local myclass a;
a.var1 = 5;
a.var2 = 10;
print(a.var1, a.var2);
不是这样的:
local myclass a;
a.SetValue("var1", 5);
a.SetValue("var2", 10);
print(a.GetValue("var1"), a.GetValue("var2"));
var1, var2 - 我只在运行时知道的变量名。
最佳答案
您可以使用 Lua 元表来做到这一点。
对于 Lua 中的每个表,您可以提供一个元表,该表可用于重载表的运算符以及它如何访问其成员。换句话说,它可以用来提供一种方法,描述每当有人试图访问表中的成员时应该发生什么。查看Metatables chapter in PIL ,尤其是它的“表访问元方法”部分。
在您的情况下,您可以创建两个 C++ 函数,它们将提供对您的 C++ 类的读取和写入访问。然后,您可以将它们绑定(bind)到 Lua 中,并重载您的 Lua 表,以便在您尝试读取表中的值或向其中写入值时调用这些函数。
关于c++ - luabind 和动态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758445/
我刚刚开始使用 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 :
我是一名优秀的程序员,十分优秀!