最初は次のようなプロパティなしで構造体メンバーにアクセスしようとしていました:
メインファイル:
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を期待どおりに設定できませんでした. ' 期待される。"。次に、これらの変数にプロパティを追加して、次のようにアクセスできるようにしました。
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;
問題: ご覧のとおり、これらの変数にアクセスして文字変換を解決できるようにプロパティを追加しましたが、それでも「値は '文字列'; 'テーブル' が必要です」というメッセージが表示されます。なぜわからないのですか?たぶんバグですか、それとも間違っていますか?ルアコード:
local packet = MyClass:new()
packet.my_struct.var1 = "hi" -- throws "value is 'string'; 'table' expected." even with property
print(packet.my_struct.var1)