पर डायरेक्टएक्स वेक्टर वर्तमान में मैं एक गेम "इंजन" पर काम कर रहा हूं जिसे 3 डी इंजन, भौतिकी इंजन और एक स्क्रिप्टिंग भाषा के बीच मूल्यों को स्थानांतरित करने की आवश्यकता है। चूंकि मुझे भौतिकी इंजन से 3 डी ऑब्जेक्ट्स में वैक्टर लागू करने की आवश्यकता होती है और अक्सर 3 डी को नियंत्रित करने में सक्षम होना चाहते हैं, साथ ही भौतिकी स्क्रिप्टिंग सिस्टम के माध्यम से ऑब्जेक्ट्स को ऑब्जेक्ट करने की आवश्यकता है, मुझे एक प्रकार के वेक्टर को बदलने के लिए एक तंत्र की आवश्यकता है (उदाहरण के लिए vector3d<float>
) दूसरे प्रकार के वेक्टर (उदाहरण के लिए btVector3
)। दुर्भाग्य से मैं इस बात पर कोई धारणा नहीं कर सकता कि वर्ग/structs कैसे निर्धारित किए जाते हैं, इसलिए एक साधारण reinterpret_cast
शायद नहीं करेगा।गैर-सदस्य रूपांतरण कार्य; विभिन्न प्रकार कास्टिंग, उदा। ओपनजीएल वेक्टर
तो सवाल यह है: अभी इस के बाद से कास्टिंग ऑपरेटरों सदस्य तरीकों की जरूरत है संकलन नहीं होगा
vector3d<float> operator vector3d<float>(btVector3 vector) {
// convert and return
}
btVector3 operator btVector3(vector3d<float> vector) {
// convert and return
}
: वहाँ मूल रूप से इस लक्ष्य को हासिल करने के लिए 'स्थिर'/गैर-सदस्य कास्टिंग विधि के कुछ प्रकार है । (error C2801: 'operator foo' must be a non-static member
)
धन्यवाद एडम! यह वही है जो मैं अभी करता हूं। मुझे आश्चर्य है कि संकलक को काम करना संभव है या नहीं। कुछ ऐसा है जैसे "अगर आप वहां जाना चाहते हैं, तो पहले वहां जाएं"। – sunside
मैं समझता हूं। हालांकि यह समाधान मेरे लिए सबसे प्रत्यक्ष लगता है, लेकिन मैंने एक और जवाब में एक और संभावना जोड़ा। –
मुफ्त कार्यों के साथ जाओ। लागू रूपांतरण आम तौर पर जाने के लिए एक बुरा तरीका है, भले ही वे संभव हो। – jalf