2009-08-05 21 views
10

मेरे पास एक ऑब्जेक्ट, डीसी, प्रकार सीडीसी है और मैं एक एचडीसी ऑब्जेक्ट प्राप्त करना चाहता हूं।मैं एक सीडीसी ऑब्जेक्ट से एचडीसी ऑब्जेक्ट कैसे प्राप्त कर सकता हूं?

मैंने एमएसडीएन दस्तावेज here पढ़ा है, लेकिन वास्तव में इसे समझ में नहीं आता है।

क्या कोई मुझे यह करने के तरीके पर एक संक्षिप्त उदाहरण/स्पष्टीकरण प्रदान कर सकता है?

उत्तर

10

सीडीसी वर्ग operator HDC() परिभाषित किया गया है संकलक परोक्ष HDC करने के लिए एक सीडीसी वस्तु कन्वर्ट करने के लिए अनुमति देता है। इसलिए यदि आपके पास सीडीसी * है और एक ऐसा फ़ंक्शन जो एचडीसी लेता है तो आप केवल पॉइंटर को अस्वीकार करते हैं और इसे फ़ंक्शन पर भेजते हैं।

+0

ठीक है, धन्यवाद! मैं 'ऑपरेटर' कीवर्ड में बहुत ज्यादा भाग नहीं लेता, इसलिए उसने मुझे फेंक दिया। – samoz

2

बस इसे असाइन करें।

CDC cdc = something. 
HDC hdc = cdc; 
if (hdc != 0) 
{ 
    //success... 
} 
3

CDC एक सी ++ वर्ग है जो - एक उचित अनुमान के लिए - एक एचडीसी encapsulates, जो एक डिवाइस संदर्भ के लिए एक हैंडल है।

जो दस्तावेज आप लिंक करते हैं, वह रूपांतरण operator का वर्णन करने के लिए लिंक करता है, जो एक सी ++ निर्माण है जो वर्ग किसी अन्य प्रकार के किसी वर्ग के उदाहरण से अंतर्निहित रूपांतरण की अनुमति देने के लिए आपूर्ति कर सकता है। इस मामले में अंतर्निहित हैंडल (एचडीसी) में अंतर्निहित रूपांतरण परिणाम जो CDC उदाहरण encapsulates।

आप CDC उदाहरण का उपयोग कर रूपांतरण कर सकते हैं कहीं भी इसे HDC में परिवर्तित करने की आवश्यकता है।

अधिकांश बस:

void f(const CDC& cdc) 
{ 
    HDC hdc = cdc; 

    // use hdc here 
} 
14

आप CDC वस्तु यह परोक्ष HDC में परिवर्तित हो जाएगा है जब जब आवश्यक:

CDC dc; 
HDC hdc = dc; // HDC hdc = dc.operator HDC(); 

आप सूचक को CDC वस्तु तो समारोह GetSafeHdc का उपयोग कर अधिक दिखेगा है, तो स्पष्ट:

CDC* pdc = SOME; 
HDC hdc = pdc->GetSafeHdc(); 
+1

GetSafeHdc() ने चाल की, धन्यवाद। – TechNyquist

संबंधित मुद्दे

 संबंधित मुद्दे