我最初试图访问没有属性的结构成员,如下所示:
主文件:
typedef struct
{
char var1[15];
char var2[33];
} my_struct_t;
class MyClass {
MyClass() { }
~MyClass() { }
my_struct_t my_struct;
};
pkg 文件:
class MyClass {
MyClass () { }
~MyClass () { }
my_struct_t my_struct;
};
typedef struct
{
tolua_property char var1[15];
tolua_property char var2[33];
} my_struct;
但它没有用,问题在于将 char arry 转换为 lua 字符串,我无法按预期设置 var1 因为它是 char arry 而不是 lua 字符串,这会引发错误:“value is 'string'; 'table ' 预期的。”。好的,然后我向这些变量添加了属性,以便能够像这里一样访问它们:
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;
问题:如您所见,我添加了能够访问这些变量并解决字符数组转换的属性,但即使它仍然会抛出“值是'字符串';预期的'表'”。我不明白为什么?可能是错误还是我做错了?lua代码:
local packet = MyClass:new()
packet.my_struct.var1 = "hi" -- throws "value is 'string'; 'table' expected." even with property
print(packet.my_struct.var1)