[英]using a pointer from a C++ object, to another C++ object, to modify member variables, from Lua
如何在Lua腳本中從另一個C ++對象獲得對C ++對象的引用? 我真的不知道如何正確地用語言概括,所以讓我先用Lua的例子詳細說明:
function doSomething()
compo = a:getComponent()
compo:setVariable(0)
end
a是一個C ++對象,函數getComponent返回一個指針:
// inside A.h
Component* A::getComponent();
似乎問題是getComponent()
將Component對象的副本傳遞給Lua而不是引用。 我遇到了與返回指針的每個函數相同的問題,Lua無法修改原始對象。
對象a似乎工作正常,如果我從Lua中修改變量,它的結果在C ++中被鏡像。 A和組件都已經綁定到Lua,以及所需的方法。
我是否在語法上遺漏了什么或者還有更多的東西呢?
我正在使用luabind,Lua 5.1和MinGW。 在此先感謝您的幫助。
編輯
這是luabind代碼。 我總結了它,因為有一堆與問題無關的其他綁定:
luabind::class_<A>("A")
.def("getComponent", &A::getComponent)
為“組件”制作一個Lua包裝器。 然后創建a:getComponent()
返回Lua對象,而不是C ++對象的真實引用。 在新的包裝器對象上添加所需的任何方法。 如果您有更多“物體”,請沖洗並重復。
簡而言之:對於你想要從Lua操作的每個對象,你必須創建一個Lua包裝器。 唯一的方法是在頂級對象上創建額外的函數,並從Lua調用那些函數( a:setComponentVariable(0)
而不是a:getComponent()
+ compo:setVariable(0)
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.