使用属性访问结构成员的tolua++
2014-6-20 10:3:28
收藏:0
阅读:163
评论:1
起初,我尝试访问结构成员而没有先设置属性,像这样:
主文件:
typedef struct
{
char var1[15];
char var2[33];
} my_struct_t;
class MyClass {
MyClass() { }
~MyClass() { }
my_struct_t my_struct;
};
包文件:
class MyClass {
MyClass () { }
~MyClass () { }
my_struct_t my_struct;
};
typedef struct
{
tolua_property char var1[15];
tolua_property char var2[33];
} my_struct;
但它没有起作用,问题在于将字符数组转换为lua字符串,我无法将var1设置为我期望的字符数组,而不是lua字符串,这导致我遇到错误:“值为“ string”;期望“表格”。然后我添加了属性来访问它们,如下所示:
typedef struct {
string get_var1() {
// const char* can be also used instead of std::string to pass this as string into a lua?
string str = var1;
return str;
}
string get_var2() {
string str = var2;
return str;
}
void set_var1(string p_name) {
strncpy(var1, p_name.c_str(), sizeof(var1));
var1[sizeof(var1) - 1] = 0;
}
void set_var2(string p_name) {
strncpy(var2, p_name.c_str(), sizeof(var2));
var2[sizeof(var2) - 1] = 0;
}
char var1[15];
char var2[33];
} my_struct_t;
问题:正如您所看到的,我添加了属性来访问这些变量并解决了字符数组转换,但即使如此,它仍然抛出“值为“ string”;期望“表格”。这是为什么?这可能是一个错误,还是我做错了什么?
lua代码:
local packet = MyClass:new()
packet.my_struct.var1 = "hi" -- 甚至与属性一起仍会抛出“值为“ string”;期望“表格””
print(packet.my_struct.var1)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
问题已解决,tolua++解析器中存在问题,即使您声明了自己的变量属性,也会使任何默认变量属性,例如:
tolua_function(tolua_S,"set_var1", tolua_lua_api_my_struct_t_set_var100); // my own property tolua_function(tolua_S,"set_var2", tolua_lua_api_my_struct_t_set_var200); // my own property tolua_variable(tolua_S,"var1", tolua_get_my_struct_t_var1, tolua_set_my_struct_t_var1); // default property tolua_variable(tolua_S,"var2", tolua_get_my_struct_t_var2, tolua_set_my_struct_t_var2); // default property当您想在LUA中分配变量时,将调用默认属性作为主属性。
要解决这个问题,实际上有两种方法,一是删除自定义属性并更改tolua_set_my_struct_t_var1回调中识别函数,或删除默认属性并仅使用自定义属性作为默认属性。