簡體   English   中英

使用從C ++對象到另一個C ++對象的指針,從Lua修改成員變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM