良い一日
c++ std::map から lua スクリプトへのアクセスを許可する特定のタスクがあります。望ましいスクリプト構文は glob["tag"] = "value" または glob("tag") = "value" です
研究では、ルバインドバインディングを試しました
std::string & glob(const std::string &tag)
{
static std::string value;
return value;
}
...
luabind::module(&state)
[
def("glob", &glob, luabind::return_reference_to(result))
]
ただし、以下にリストされているスクリプトの実行後
glob("tag") = "asdasd"
print(glob("tag"))
エラーが発生しました [string "glob("tag") = "asdasd"..."]:1: '=' の近くに予期しない記号があります
それでは、ご意見ご感想お待ちしております。
ありがとう
更新 2lhf: グローバル変数データは c++ 部分を介して保存およびシリアル化され、lua からアクセスする必要があります。luaState はスクリプトの実行ごとに作成され、実行間では存在しません。解決策の 1 つは、スクリプトの実行前にグローバル変数テーブルを作成して入力し、実行後にマップと同期することですが、十分に遅いと思います。そのため、前述の構文を使用した c 関数を介したアクセスを歓迎します。