मैं एक बेस क्लास रखना चाहता हूं जिसमें निरंतर फ़ील्ड हो (जैसे क्लास से जुड़ी एक अद्वितीय आईडी जिसे संकलन समय के बाद संशोधित नहीं किया जा सकता)। अब तक static const
घोषणा ठीक होगी। अब, मैं इस बेस क्लास का उत्तराधिकारी बनना चाहता हूं और यह सुनिश्चित करना चाहता हूं कि इस वर्ग के बच्चों के पास एक ही क्षेत्र है, लेकिन उनके अपने मूल्यों के साथ। मैं यह कैसे कर सकता हूँ?क्या सी ++ कक्षा में वर्चुअल स्थिर स्थिर मान घोषित करना संभव है?
मान लीजिए, मैं एक ID
क्षेत्र है कि 0. की int
मूल्य तो रखती है साथ Base
नामक एक आधार वर्ग करना चाहते हैं, मैं वर्गों A
, B
और C
करना चाहते हैं, उन सभी को किया जा रहा है Base
के सार्वजनिक बच्चे और मैं यह सुनिश्चित करना चाहता हूं कि इन बच्चों के पास ID
फ़ील्ड्स भी 1, 2 और 3 के संबंधित मानों के साथ होंगे ('सुनिश्चित करने के द्वारा', मेरा मतलब है कि एक कंपाइलर त्रुटि प्राप्त करने की तरह कुछ अगर वे ' एक आईडी स्पष्ट रूप से घोषित किया गया है)।
मैं इस परिदृश्य के निर्माण के लिए प्रबंधन कर सकते हैं, तो मेरी उम्मीद से हो सकता है कि एक Base*
सूचक की ID
क्षेत्र के लिए पूछ रहा है, मैं निर्भर करता है कि सूचक के रूप में new A()
, new B()
या new C()
बनाया गया था विभिन्न मूल्यों मिलना चाहिए।
मेरा अनुमान ID
virtual static const
के रूप में घोषित करना होगा, जो निश्चित रूप से समझ में नहीं आता है और एक कंपाइलर त्रुटि देता है।
लेकिन फिर वर्णित परिणाम प्राप्त करने के लिए मैं क्या कर सकता हूं? (केवल एक चीज जिसे मैं कल्पना कर सकता हूं ID
को एक पूर्णांक लौटने वाले वर्चुअल फ़ंक्शन के रूप में घोषित करना होगा और फिर फ़ंक्शन बॉडी में मूल्य को हार्ड-कोड करना होगा, लेकिन मैं कुछ और सुरुचिपूर्ण दिख रहा हूं।)
धन्यवाद अग्रिम!
बहुरूपता सदस्य कार्यों के लिए ही काम करता है और डेटा के सदस्यों के लिए मान्य नहीं है। – Mahesh
मैंने टेम्पलेट्स पर आधारित एक विकल्प लिखा है: http://stackoverflow.com/a/36797199/1529139 – 56ka