首页 > 解决方案 > 如何从 Lua 更新 C++ 对象

问题描述

如何在 Lua 中定义一个函数,该函数将更新从 C++ 传递给它的对象(可能是通过指针或引用?)。我正在使用 sol2,并希望在以下 C++ 源代码中更新对象的m_数据成员:Foof

#define SOL_ALL_SAFETIES_ON 1
#include <sol/sol.hpp>
#include <iostream>
             
struct Foo              
{          
  int m_ = 0;
  void bar() { std::cout << "hello\n;"; }
};                   
         
int main(int, char*[])                                                          
{                                                                               
  sol::state lua;                                                               
  lua.open_libraries(sol::lib::base);                                           
                                                                                
  sol::load_result script1 = lua.load_file("test1.lua");     
  sol::function fx = lua["f"];
                                                                                
  Foo f;
  fx(f);                                                                                                                                                                              
  assert(4 == f.x);
                                                                              
  return 0;                                                                     
}

...我的 lua 脚本目前看起来像这样:

function f(x)
  x:m_ = 4
end

标签: c++lua

解决方案


推荐阅读