को दर्शाता है चलो कहते हैं कि मैं इस तरह एक वर्ग करते हैं:समझने में सहायता चाहिए कैसे luabind कक्षाएं
class A
{
public:
A(){}
~A(){}
};
और इस तरह Luabind के माध्यम से लुआ को यह बेनकाब:
module(luaState)
[
class_<A>("Foo")
.def(constructor<>())
];
और अंत में एक स्क्रिप्ट में यह दृष्टांत इस तरह:
A = Foo();
उस समय ए के वास्तविक 'अस्तित्व की स्थिति' क्या है?
क्या यह कहीं ढेर में है, और लुआ इसे कहीं संदर्भित करता है? (या एक लुबाइंड :: ऑब्जेक्ट?)
मुझे यह महसूस हो रहा है कि यह केवल एक सूचक हो सकता है, जैसा कि नए या समकक्ष द्वारा आवंटित किया गया है।
हालांकि, मैं उन कार्यों को बाध्य कर सकता हूं जो संदर्भ स्वीकार करते हैं, जैसे lua_doSomething(A & a)
और वहां क्या होता है एक वास्तविक संदर्भ होगा। अनुमोदित मुझे पता है कि यह बहुत अच्छा हो सकता है a
*a
के रूप में गुजरने के लिए, लेकिन मुझे नहीं पता कि ऐसा कैसे होता है।
कारण मैं यह पूछ रहा हूं कि स्क्रिप्ट में तुरंत बेहतर ऑब्जेक्ट्स के जीवनकाल को समझना और भविष्यवाणी करना है।
यही कारण है, और मुझे अनिश्चित जा रहा है, तो स्वामित्व या जीवन काल के बजाय ऊपर की तरह लुआ को वर्ग उजागर की है, अगर बदलने के लिए, मैं इसे इस तरह कार्य करें:
A * lua_CreateA()
{
return new A();
}
module(luaState)
[
class_<A>("Foo")
];
module(luaState)
[
def("createA",&lua_CreateA)
];
और
A = createA();
की तरह इसे का उपयोग
तर्क से मैं अब तक समझता हूं, इस मामले में मुझे सफाई करने की आवश्यकता होगी क्योंकि मैं एक नई वस्तु आवंटित कर रहा हूं, जब तक कि लुबाइंड के लिए ऐसा असाइनमेंट बाध्य कन्स्ट्रक्टर के साथ ऐसा ही नहीं होगा।
संक्षेप में, मैं वास्तव में वास्तव में वस्तु जीवन और सामान यहाँ लेकर संदेह में हूँ ... मैं इस से संबंधित खोजशब्दों के लिए googled, लेकिन मैं केवल तरह http://www.gamedev.net/topic/525692-luabind-ownership-and-destruction/
सामान मिल रहा है कौन सा नहीं है वास्तव में मैं क्या जानना चाहता हूँ। मैं कंक्रीट तरीके को समझना चाहता हूं कि आवंटन, तत्कालता, जीवनकाल और उसके बारे में दृश्यों के पीछे चीजों को कैसे नियंत्रित किया जाता है।