我將Lua嵌入到C++類中。tolua ++忽略賦值和不等式運算符?
似乎tolua ++忽略了我班的一些重載操作員。
tolua ++發出以下警告:
- ** tolua ++警告:對於運營商不支持=,忽略
- ** tolua ++警告:對於運營商不支持=,忽略
有沒有辦法解決?
我將Lua嵌入到C++類中。tolua ++忽略賦值和不等式運算符?
似乎tolua ++忽略了我班的一些重載操作員。
tolua ++發出以下警告:
有沒有辦法解決?
我不熟悉tolua ++,但它是不合適的,它不會支持這兩個。 tolua ++只是禮貌地通知你,所以你不認爲代碼有任何影響。
賦值操作符是沒有意義的在Lua的背景下,和the ~=
operator is the negation of ==
,所以實施operator==
照顧兩個==
和~=
爲您的Lua對象。
編輯:使用這個空間來回答以下提出這樣我就可以包括代碼的一個問題:關於轉讓
誠然,這解釋了不平等的關係,但什麼?
在Lua中,變量沒有輸入,它們只是值的名稱。賦值運算符將任何類型的新值與該名稱相關聯,但不會修改與該名稱相關聯的先前值(例如,該值存在於內存中的某處,不變,等待被垃圾收集,如果沒有進一步引用它存在)。想想分配裝置,用於一個全局變量:
print(math) --> table: 00516620
math = "foo"
print(math) --> foo
這下聯是等價於:
_G.math = "foo"
換句話說,math=val
正在取代在_G["math"]
值,因此這將意味着覆蓋operator=
爲數學對象?沒有。
最接近修改賦值運算符的是__newindex
metamethod,它只適用於tables/userdata,所以對本地沒有影響。在我們的math="foo"
示例中,__newindex
將在_G
而不是math
,甚至在此情況下甚至不會被調用,因爲_G.math
具有現有值(__newindex
在您嘗試將值分配給不存在的密鑰時調用)
確實,這解釋了不平等關係,但分配呢? – skyeagle 2010-12-23 13:20:40