2010-06-13 10 views
8

दृढ़ता से टाइप किए गए C++ 0x गणनाओं के उदाहरण एक दूसरे के समान क्यों नहीं हैं?दृढ़ता से टाइप किया गया सी ++ 0x गणना तुलना


अद्यतन: वे जीसीसी 4.6 में तुलनीय हैं; मुझे यकीन नहीं है कि यह जीसीसी 4.4 में काम करता है।

+4

क्योंकि यह दृढ़ता से टाइप किया गया है :) –

+0

असली सवाल है "दृढ़ता से क्या मतलब है?", मुझे लगता है। –

+0

@phresnel: [मजबूत टाइपिंग] (http://en.wikipedia.org/wiki/Strong_typing); [सी ++ 0x में दृढ़ता से टाइप की गई गणना] (http://en.wikipedia.org/wiki/C%2B%2B11#Strongly_typed_enumerations) –

उत्तर

8

यदि आप दृढ़ता से टाइप किए गए अंकन का उपयोग करते हैं, तो यह आपके enum को एक वास्तविक प्रकार, एक वर्ग बनाने जैसा है। फिर यह वर्गों के समान नियमों का पालन करता है।

विभिन्न वर्गों के उदाहरणों को डिफ़ॉल्ट रूप से एक-दूसरे से तुलना नहीं किया जा सकता है। तुलनात्मक बनाने के लिए आपको एक तुलना फ़ंक्शन (या सदस्य फ़ंक्शन) को परिभाषित करना होगा।

इसलिए एक गणना दृढ़ता से टाइप करने से यह एक ही नियम का पालन करता है।

+5

मुझे किसी अन्य के साथ तुलना करने में सक्षम होने के बिना एक enum के लिए कोई उपयोग नहीं दिखता है। आईएमओ, * समान * प्रकार के enum उदाहरणों की तुलना * एक * दुरुपयोग नहीं है। – balki

+2

@balki मैं आपकी टिप्पणी को समझ नहीं पा रहा हूं। enum वर्ग एक ही प्रकार के साथ enum की तुलना को मना नहीं करता है, यह अन्य प्रकार के साथ तुलना को मना करता है। यदि यह स्पष्ट नहीं था, तो मैं एक परिशुद्धता जोड़ूंगा। – Klaim

+2

हां। लेकिन सवाल एक ही प्रकार के enums के बारे में था। हालांकि अब दोनों प्रश्न और उत्तर स्पष्ट हैं। – balki