2
考慮使用LuaBridge對象傳遞到LUA腳本的下面的例子中的對象:不能修改傳遞給LUA
顯然,傳遞的變量不能由LUA修改:
Core.t1.d = 12
print(Core.t1.d)
以上代碼打印10
。
同樣在處理腳本後的C++中,變量仍然保持其初始值。
luaL_dofile(lua_state, ".../test.lua");
std::cout << t1.d << std::endl; // 10
未對象成員然而簡單的標量數據類型(如浮法)可以進行修改。我錯過了什麼嗎?
編輯: 如果我Test *t1 = new Test(10);
甚至Test t(10); Test *t1 = &t;
和仍然通&t1
到addVariable取代Test t1(10);
這顯然是可以修改的。我真的不明白這種行爲,有人可以解釋嗎? (地址的地址?)
的d值感謝您的回答,這意味着我完全無法在使用LuaBridge從C++公開的對象上使用修改方法? – Appleshell
你應該把你的全局變量的修改包裝到一個函數中。當然你可以做到,但不是那樣。最簡單但不是最安全的方法是'Test t1_(10);測試* t1 = &t1_;' –
這就是我嘗試過的方法。然而,修改方法的意思是'類Test'中的'increment'方法。從lua調用該方法對該對象也沒有影響。 – Appleshell